Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/471.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/0/mercurial/2.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_Algorithm - Fatal编程技术网

Javascript 访问无限嵌套子对象

Javascript 访问无限嵌套子对象,javascript,algorithm,Javascript,Algorithm,想知道如何访问JS中的无限嵌套对象吗 考虑一下这个例子,作为我的面试官 您有一个具有父对象和无限嵌套子对象的对象 [ { name: "Jack", age: "98" , profession: "doctor children: [ { name: "Varun", age: "80" profession: "scientist"

想知道如何访问JS中的无限嵌套对象吗

考虑一下这个例子,作为我的面试官

您有一个具有父对象和无限嵌套子对象的对象

[ 
 { 
   name: "Jack",
   age: "98" ,
   profession: "doctor
   children: [
               {
                 name: "Varun",
                 age: "80"
                 profession: "scientist"
                 children: [
                             {
                                name: "Ishan"
                                age: "62",
                                profession: "teacher
                                children: [{....
                                 .....
                                 .....[{
                                       name: "Rahul",
                                       age: "23",
                                       profession: "engineer"
                                      children: [{
                                                  .....
我需要找到相应的名称,其中专业是“工程师”,以及给定对象的嵌套深度

注:此处要考虑的子项数量是无限的

问题:有人能帮我弄清楚如何使用递归和不使用递归来做吗

更新:他给了我一个使用分而治之的提示

更新:基于Bary的解决方案,我尝试了类似的方法

let infiniteArray = [ 
    { 
      name: "Jack",
      age: "98" ,
      profession: "doctor",
      children: [
                  {
                    name: "Varun",
                    age: "80",
                    profession: "scientist",
                    children: [
                                {
                                   name: "Ishan",
                                   age: "62",
                                   profession: "teacher"
                                }
                            ]
                    }
                ]
        }
]


function isTheItem(item) {
   if (item["profession"] === "teacher") return item
    return false
 }


 function walk(collection) {
    return collection.find(item => isTheItem(item) || walk(item.children));
  }
但是当我将console.log记录下来时,即
console.log(walk(infiniteArray))
,它记录了整个infiniteArray,我明白为什么我只返回与profession对应的名称。关于我如何实现这一目标有什么帮助吗

  name: "Ishan",
        age: "62",
        profession: "teacher"
    }

你的收藏有两个方向 *兄弟姐妹 *嵌套

因此,您可以使用常规数组迭代器迭代这个同级项,并递归遍历每个项的子项

function isTheItem(item) {
   return ...;
}

function walk(collection) {
  return collection.find(item => isTheItem(item) || walk(item.children));
}

你的收藏有两个方向 *兄弟姐妹 *嵌套

因此,您可以使用常规数组迭代器迭代这个同级项,并递归遍历每个项的子项

function isTheItem(item) {
   return ...;
}

function walk(collection) {
  return collection.find(item => isTheItem(item) || walk(item.children));
}

分治算法通常更多地涉及数组中的值排序(在访问过程中)。如果你是按年龄排序的话,我可以看出这是一个暗示。但是,在搜索由无限多个嵌套对象组成的键值对时,无法真正分而治之。您必须搜索n个值,直到找到结果。对象的任何分割都不一定会提高存储了您想要查找的随机键值对的效率

如果我错了,更有经验的开发人员会纠正我的错误


Barry Gane为实际应用程序编写的代码有一个良好的开端。

分治算法通常更多地涉及数组中的值排序(在采访过程中)。如果你是按年龄排序的话,我可以看出这是一个暗示。但是,在搜索由无限多个嵌套对象组成的键值对时,无法真正分而治之。您必须搜索n个值,直到找到结果。对象的任何分割都不一定会提高存储了您想要查找的随机键值对的效率

如果我错了,更有经验的开发人员会纠正我的错误


Barry Gane为实际应用程序编写的代码有了一个很好的开端。

还有一个lodash/下划线函数用于搜索键值对。他们要求你处理与算法相关的问题,但值得一提的是,在实际操作中,你会使用lodash函数来提高可读性。还有一个lodash/下划线函数用于搜索键值对。他们要求你处理与算法相关的问题,但值得一提的是,在实际操作中,你会使用lodash函数来提高可读性。