递归遍历对象(树)

有没有一种方法(在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 objects

function 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

回到顶部