递归地循环遍历对象(树)

2024-03-24

有没有办法(在 jQuery 或 JavaScript 中)循环遍历每个对象及其子对象和孙对象等等?

如果是这样……我也能读到他们的名字吗?

Example:

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 https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Statements/for...in loop:

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... 
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

递归地循环遍历对象(树) 的相关文章