递归遍历对象(树)
有没有一种方法(在jQuery或JavaScript中)循环遍历每个对象以及子对象和孙子对象等等?
如果是的话…我还能读他们的名字吗?
foo :{ bar:'',
child:{
grand:{
greatgrand: {
//and so on
}
}
}
}
所以循环应该做这样的事情…
loop start if(nameof == 'child'){
//do something
}
if(nameof == 'bar'){
//do something
}
if(nameof =='grand'){
//do something
}
loop end
回答:
您正在寻找for...in
循环:
for (var key in foo){
if (key == "child")
// do something...
}
请注意,for...in
循环将遍历任何可枚举的属性,包括那些添加到对象原型的属性。为了避免作用于这些属性,可以使用hasOwnProperty
方法检查该属性是否仅属于该对象:
for (var key in foo){
if (!foo.hasOwnProperty(key))
continue; // skip this property
if (key == "child")
// do something...
}
递归执行循环就像编写递归函数一样简单:
// This function handles arrays and objectsfunction eachRecursive(obj)
{
for (var k in obj)
{
if (typeof obj[k] == "object" && obj[k] !== null)
eachRecursive(obj[k]);
else
// do something...
}
}
以上是 递归遍历对象(树) 的全部内容, 来源链接: utcz.com/qa/424687.html