Javascript:找到最深的对象并从中返回值?
没有Jquery,我怎么能在对象数组中找到最深的对象 所以我有一个对象,它可以有很多孩子,有时一个孩子,有时10个孩子,每个孩子可能有几个孩子 我想找到单个最深对象的属性“label”是什么,然后返回该属性。 我不想找到最深的具有标签属性的对象,这是不同的;我想找到绝对最深的对象,然后返回label属性所说的内容(有时可能为空或不存在) 有什么想法吗 编辑: 永远都会有一个最深的物体,永远不会有偶数个孩子成为起始的主要物体 编辑2: 我没有类似的工作代码,但这里有更多的描述:Javascript:找到最深的对象并从中返回值?,javascript,Javascript,没有Jquery,我怎么能在对象数组中找到最深的对象 所以我有一个对象,它可以有很多孩子,有时一个孩子,有时10个孩子,每个孩子可能有几个孩子 我想找到单个最深对象的属性“label”是什么,然后返回该属性。 我不想找到最深的具有标签属性的对象,这是不同的;我想找到绝对最深的对象,然后返回label属性所说的内容(有时可能为空或不存在) 有什么想法吗 编辑: 永远都会有一个最深的物体,永远不会有偶数个孩子成为起始的主要物体 编辑2: 我没有类似的工作代码,但这里有更多的描述: Object1 =
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'如果在同一深度有更多的对象,那么最深的一个对象是什么?一些代码,向我们展示您正在使用的和您尝试过的,会很有帮助。@adeneo-Thx,实际上总是会有一个最深的对象。我编辑了这个问题,以反映现在您从一个对象数组开始,这些对象中还有其他数组吗?@j08691我现在的代码与我的问题无关,我一直使用的代码根本不起作用,因为它正在成功地找到最深的具有label属性的子级。所以对我来说,它过早地停止了,因为一些中间级别的孩子有标签属性。我只想进入儿童名单的末尾,看看有什么
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)