Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/444.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript:找到最深的对象并从中返回值?_Javascript - Fatal编程技术网

Javascript:找到最深的对象并从中返回值?

Javascript:找到最深的对象并从中返回值?,javascript,Javascript,没有Jquery,我怎么能在对象数组中找到最深的对象 所以我有一个对象,它可以有很多孩子,有时一个孩子,有时10个孩子,每个孩子可能有几个孩子 我想找到单个最深对象的属性“label”是什么,然后返回该属性。 我不想找到最深的具有标签属性的对象,这是不同的;我想找到绝对最深的对象,然后返回label属性所说的内容(有时可能为空或不存在) 有什么想法吗 编辑: 永远都会有一个最深的物体,永远不会有偶数个孩子成为起始的主要物体 编辑2: 我没有类似的工作代码,但这里有更多的描述: Object1 =

没有Jquery,我怎么能在对象数组中找到最深的对象

所以我有一个对象,它可以有很多孩子,有时一个孩子,有时10个孩子,每个孩子可能有几个孩子

我想找到单个最深对象的属性“label”是什么,然后返回该属性。

我不想找到最深的具有标签属性的对象,这是不同的;我想找到绝对最深的对象,然后返回label属性所说的内容(有时可能为空或不存在)

有什么想法吗

编辑: 永远都会有一个最深的物体,永远不会有偶数个孩子成为起始的主要物体

编辑2: 我没有类似的工作代码,但这里有更多的描述:

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)