没有Jquery,我如何在对象数组中找到最深的对象?
所以我有一个对象,可以有很多孩子,有时是1个孩子,有时是10个孩子,每个孩子都可能有几个孩子。
我想找一下这个属性'标签'单个最深的对象是并返回。
我不想找到具有标签属性的最深的对象,这是不同的;我想找到绝对最深的对象,然后返回标签属性所说的内容(有时可能是空白或不存在)。
有什么想法吗?
编辑: 总是是最深的对象,永远不会有偶数个孩子到起始主对象
EDIT2: 我没有类似工作代码的东西,但这里有更多的描述:
Object1 = ({ label: Hello, friend: Object2 })
Object2 = ({ label: HJM });
我想要的结果是HJM
编辑3:更复杂的数据集
var data = [
{label:1 },
{John:2 },
{Jack:3 },
{label:4, friend: [
{label:5 },
{label:6 },
{Alex:7 , friend: [
{label:8 }]
]}
];
myMagicFunction(data)
的结果最好是' 8'
答案 0 :(得分:0)
function getDeepestObject(obj){
var children = [];
Object.keys(obj).forEach(function(key){
if(typeof obj[key] === 'object' && obj[key])
children.push(getDeepestObject(obj[key]));
});
if(!children.length){ return { obj:obj, level:0 }; }
else {
var deepestChild = {level:-1};
children.forEach(function(child){
if(child.level > deepestChild.level)
deepestChild = child;
});
return deepestChild;
}
}
var o = {
e: {
f: {
j: { label: 'hello'}
},
r: {}
},
a: {
l:{}
},
r: {}
}
console.log(getDeepestObject(o).obj.label)