循环遍历嵌套的json对象,而不知道特定层的名称

循环遍历嵌套的json对象,而不知道特定层的名称,json,typescript,loops,object,nested,Json,Typescript,Loops,Object,Nested,当您不知道该对象有多少视图(“A”、“B”、“C”…)时,是否可以循环遍历该嵌套对象?我目前使用的是字母索引,但我听说现在“视图层”也可以有不同的名称,所以我不能使用我目前的想法,我必须在不知道“a”、“B”、“C”层名称的情况下循环这个对象。有办法吗 我的当前代码 loopThroughObject() { let alphabet = ["A", "B", "C"]; let index = 0; this.all_tables.views.forEach(views =

当您不知道该对象有多少视图(“A”、“B”、“C”…)时,是否可以循环遍历该嵌套对象?我目前使用的是字母索引,但我听说现在“视图层”也可以有不同的名称,所以我不能使用我目前的想法,我必须在不知道“a”、“B”、“C”层名称的情况下循环这个对象。有办法吗

我的当前代码

loopThroughObject()
{
   let alphabet = ["A", "B", "C"];
   let index = 0;

   this.all_tables.views.forEach(views => {

      views[alphabet[index]].forEach(view => {

         view.positionen.forEach(position=> {
           alert( position.field1);
         });

      });

      index++;
});
}
嵌套JSON对象

 all_tables = {  
   "views":[  
      {  
         "A":[  
            {  
               "id":"",
               "username":"",
               "status":"",
               "location":"",
               "positionen":[  
                  {  
                     "field1":"",
                     "field2":"",
                     "field3":""
                  },
                  {  
                     "field1":"",
                     "field2":"",
                     "field3":""
                  },
                  {  
                     "field1":"",
                     "field2":"",
                     "field3":""
                  }
               ]
            },
            {  
               "id":"",
               "username":"",
               "status":"",
               "location":"",
               "positionen":[  
                  {  
                     "field1":"",
                     "field2":"",
                     "field3":""
                  },
                  {  
                     "field1":"",
                     "field2":"",
                     "field3":""
                  },
                  {  
                     "field1":"",
                     "field2":"",
                     "field3":""
                  }
               ]
            }
         ],
         "B":[  
            {  
               "id":"",
               "username":"",
               "status":"",
               "location":"",
               "positionen":[  
                  {  
                     "field1":"",
                     "field2":"",
                     "field3":""
                  },
                  {  
                     "field1":"",
                     "field2":"",
                     "field3":""
                  },
                  {  
                     "field1":"",
                     "field2":"",
                     "field3":""
                  }
               ]
            },
            {  
               "id":"",
               "username":"",
               "status":"",
               "location":"",
               "positionen":[  
                  {  
                     "field1":"",
                     "field2":"",
                     "field3":""
                  },
                  {  
                     "field1":"",
                     "field2":"",
                     "field3":""
                  },
                  {  
                     "field1":"",
                     "field2":"",
                     "field3":""
                  }
               ]
            }
         ],
         "C":[  
            {  
               "id":"",
               "username":"",
               "status":"",
               "location":"",
               "positionen":[  
                  {  
                     "field1":"",
                     "field2":"",
                     "field3":""
                  },
                  {  
                     "field1":"",
                     "field2":"",
                     "field3":""
                  },
                  {  
                     "field1":"",
                     "field2":"",
                     "field3":""
                  }
               ]
            },
            {  
               "id":"",
               "username":"",
               "status":"",
               "location":"",
               "positionen":[  
                  {  
                     "field1":"",
                     "field2":"",
                     "field3":""
                  },
                  {  
                     "field1":"",
                     "field2":"",
                     "field3":""
                  },
                  {  
                     "field1":"",
                     "field2":"",
                     "field3":""
                  }
               ]
            }
         ]
      }
   ]
}

有几种
Object
方法可以实现这一点:(从ES5开始),(从ES2017开始),(仍处于实验阶段)。对于最通用的方法,您可以使用第一种方法:

function loopThroughObject() {
  this.all_tables.views.forEach(views => {

    Object.keys(views).forEach(key => {
      let view = views[key];

      view.positionen.forEach(position => {
        alert(position.field1);
      });

    });
  });
}

有几种
Object
方法可以实现这一点:(从ES5开始),(从ES2017开始),(仍处于实验阶段)。对于最通用的方法,您可以使用第一种方法:

function loopThroughObject() {
  this.all_tables.views.forEach(views => {

    Object.keys(views).forEach(key => {
      let view = views[key];

      view.positionen.forEach(position => {
        alert(position.field1);
      });

    });
  });
}

我认为您的JSON结构并不完全正确

首先,
views
属性是
array
,但它有一个项目,其中唯一一个项目是具有视图项目的
object
。我认为它首先应该是一个
对象
,因为JavaScript没有任何关联数组类型

"views": {  
         "A":[ .. ],
         "B":[ .. ],
         ...
}
然后可以使用
Object
方法进行迭代,如
Object.keys()
Object.values()
Object.entries()

Object.values(this.all_tables.views).forEach(viewGroup => {

     viewGroup.forEach(view => {

         view.positionen.forEach(position=> {
           alert( position.field1);
         });
     });
});

进一步阅读:


我认为您的JSON结构并不完全正确

首先,
views
属性是
array
,但它有一个项目,其中唯一一个项目是具有视图项目的
object
。我认为它首先应该是一个
对象
,因为JavaScript没有任何关联数组类型

"views": {  
         "A":[ .. ],
         "B":[ .. ],
         ...
}
然后可以使用
Object
方法进行迭代,如
Object.keys()
Object.values()
Object.entries()

Object.values(this.all_tables.views).forEach(viewGroup => {

     viewGroup.forEach(view => {

         view.positionen.forEach(position=> {
           alert( position.field1);
         });
     });
});

进一步阅读:


您可以使用以下代码

function loopThroughObject()
{
    let index = 0;
    this.all_tables.views.forEach(views => {
       for (var key in views) {
           views[key].forEach(view => {
               view.positionen.forEach(position=> {
                   alert( position.field1);
               });
           });
       }
       index++;
   });
}

您可以使用以下代码

function loopThroughObject()
{
    let index = 0;
    this.all_tables.views.forEach(views => {
       for (var key in views) {
           views[key].forEach(view => {
               view.positionen.forEach(position=> {
                   alert( position.field1);
               });
           });
       }
       index++;
   });
}

这可能吗(这可能吗?:(谢谢,你是对的,json结构确实不正确。我想我需要它们作为“数组”。谢谢,你是对的,json结构确实不正确。我想我需要它们作为“数组”。太棒了,我用的正是你的示例:)太棒了,我用的正是你的示例:)谢谢,这是一种不使用现代技术的方法;)谢谢,这是一种不用现代工艺的方法;)