如何遍历嵌套对象的javascript数组?

时间:2015-09-08 13:28:29

标签: javascript

Circle()

我想以这样的方式遍历这个数组,以便我可以获得所有可能的值,如标题,横幅,社交媒体,徽标,link1,标题内的link2等等。

1 个答案:

答案 0 :(得分:2)

你可以使用[index]进入数组元素,使用.property进入对象属性内部(如果包含变量名称不支持的字符,或者你想要创建属性,也可以使用['property']名称动态)。

例如,您可以获取link_1的{​​{1}}值:

Header

如果您想让它更具可读性,可以按如下方式编写:

var value = leftArr[0].Header[0].link_1;
console.log(value); // Should display 'Link1(#Section1)';

如果要动态构建属性名称,还可以:

var header = leftArr[0].Header[0];
var link_1 = header.link_1;
//You can reuse headers to access other members
var link_7 = header.link_7;

如果您想深入了解对象中的所有值,您可以:

var links = [];
var header = leftArr[0].Header[0];
var i = 0;
while(header['link_'+i++]) {
    links[i-1] = header['link_' + i];
}
console.log(links); // Will contain: ['Link1(#Section1)','Link2(#Section2)'....'Link7(#Section7)']

如果要遍历数组中的所有元素,则:

for (var keyVal in header) {
    if (header.hasOwnProperty(keyVal)) {
        console.log(keyVal + ':' + header[keyVal]);
    } 
}

为了方便起见,你可以将它们组合在另一个中,或者使用一些递归来打印对象中的所有数据,如下所示:

for (var index in leftArray) {
    var item = leftArray[index];
}

这里有一个正在运行的plnkr:http://plnkr.co/edit/VE44gGDzsfxgZ6iH4SkG?p=preview