我有一个动态创建的对象。这是一个简单的例子:
global.data {
children: [
0: {
children: [
0: {
children: value
}
]
}
]
}
我想要做的是检查对象(global.data)是否具有'children'属性,从中获取属性,然后通过循环将该对象('children')发回来查看它是否有它自己的'孩子'的财产。我希望它继续前进,直到没有更多的“孩子”离开。
答案 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