我正在尝试构建一个算法,如果我有一个3层嵌套的JSON结构,但将来这个结构可能更深。像5层。我怎么能解释这个?我知道如何使用固定的已知图层,而不是增加图层。
答案 0 :(得分:0)
只是为了扩展Juvian所说的(使用递归)
递归本质上是一个重复自身的函数。对于JSON数据,您将验证属性是对象还是数组,并递归调用遍历JSON的函数。
我没有代码或数据可供使用,所以这是一个非常简单的例子
var data = [
{
obj: {
prop: 'some value',
prop2: [
'some value again'
]
},
value: 'string'
}
];
function traverse(d) {
var type = Object.prototype.toString.call(d),
max,
i;
if(type === 'object Object') {
max = Object.keys(data).length; // for objects
} else if (type === 'object Array') {
max = d.length; // for arrays
}
for (i = 0; i < max; i++) {
if (typeof d[i] === 'object') {
// continue traversing 1 level deeper
traverse(d[i]);
} else {
// do something with the value
}
}
}
traverse(data);