循环遍历嵌套的json对象,而不知道特定层的名称
当您不知道该对象有多少视图(“A”、“B”、“C”…)时,是否可以循环遍历该嵌套对象?我目前使用的是字母索引,但我听说现在“视图层”也可以有不同的名称,所以我不能使用我目前的想法,我必须在不知道“a”、“B”、“C”层名称的情况下循环这个对象。有办法吗 我的当前代码循环遍历嵌套的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 =
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结构确实不正确。我想我需要它们作为“数组”。太棒了,我用的正是你的示例:)太棒了,我用的正是你的示例:)谢谢,这是一种不使用现代技术的方法;)谢谢,这是一种不用现代工艺的方法;)