javascript遍历一个对象

时间:2012-10-23 19:44:31

标签: javascript object loops traversal

我有一个动态创建的对象。这是一个简单的例子:

global.data {
    children: [
        0: {
            children:  [
                0: {
                   children: value 
                }
            ]
        }
    ]

}

我想要做的是检查对象(global.data)是否具有'children'属性,从中获取属性,然后通过循环将该对象('children')发回来查看它是否有它自己的'孩子'的财产。我希望它继续前进,直到没有更多的“孩子”离开。

2 个答案:

答案 0 :(得分:6)

运行while循环直到达到最深。 jsfiddle

global = {};
global.data = {
    children: [
         {
            children:  [
                 {
                   children: "value"
                }
            ]
        }
    ]
}

var obj = global.data;

while( typeof obj == 'object' && typeof obj.children == 'object'){
  obj = obj.children[0];
}
obj = obj.children ? obj.children  : obj;​
 // at this point obj is either undefined or has no children property. 

答案 1 :(得分:0)

请考虑使用object-scan。一旦您将数据包起来,它对于数据处理就非常强大。下面的示例将仅返回第一个值,但可以轻松更改为返回所有子项。

const objectScan = require('object-scan');

const input = {
  children: [{
    children: [{
      children: 'value'
    }]
  }]
};

const find = (data) => objectScan(['**(^children$)'], {
  abort: true,
  rtn: 'value',
  useArraySelector: false,
  filterFn: ({ value }) => typeof value === 'string'
})(data);

console.log(find(input));
// => value