有没有一种方法(在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...in
for (var key in foo) { if (key == "child") // do something... }
请注意,for...in循环将遍历任何可枚举的属性,包括那些添加到对象原型的属性。为了避免作用于这些属性,可以使用hasOwnProperty方法检查该属性是否仅属于该对象:
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... } }