Javascript 用于返回未定义的嵌套对象的递归函数

Javascript 用于返回未定义的嵌套对象的递归函数,javascript,Javascript,我在一个嵌套的对象中循环,寻找一个特定的对象,如果我找到了,我会做一些事情。我可以让它为第一个嵌套工作,但之后的任何嵌套我都会得到一个未定义的值 让myObj=[{ id:1, 儿童:[{ id:1.1, 儿童:[] }, { id:1.2, 儿童:[] } ] }, { id:2, 儿童:[{ id:2.1, 儿童:[] }, { id:2.2, 儿童:[] } ] } ] 函数addToObj(itemToAdd、parentId、obj){ for(设i=0;i

我在一个嵌套的对象中循环,寻找一个特定的对象,如果我找到了,我会做一些事情。我可以让它为第一个嵌套工作,但之后的任何嵌套我都会得到一个未定义的值

让myObj=[{
id:1,
儿童:[{
id:1.1,
儿童:[]
},
{
id:1.2,
儿童:[]
}
]
},
{
id:2,
儿童:[{
id:2.1,
儿童:[]
},
{
id:2.2,
儿童:[]
}
]
}
]
函数addToObj(itemToAdd、parentId、obj){
for(设i=0;iaddToObj(项目ToAdd2.1,myObj)您需要使用递归搜索的返回值:如果存在,则返回:

for (let i = 0; i < obj.children.length; i++) {
  const possibleResult = search(obj.children[i], id);
  if (possibleResult) {
    return possibleResult;
  }
}
for(设i=0;i
让myObj=[{
id:1,
儿童:[{
id:1.1,
儿童:[]
},
{
id:1.2,
儿童:[]
}
]
},
{
id:2,
儿童:[{
id:2.1,
儿童:[]
},
{
id:2.2,
儿童:[]
}
]
}
]
函数addToObj(itemsToAdd、parentId、obj){
for(设i=0;iaddToObj(项目ToAdd2.1,myObj)您需要使用递归搜索的返回值:如果存在,则返回:

for (let i = 0; i < obj.children.length; i++) {
  const possibleResult = search(obj.children[i], id);
  if (possibleResult) {
    return possibleResult;
  }
}
for(设i=0;i
让myObj=[{
id:1,
儿童:[{
id:1.1,
儿童:[]
},
{
id:1.2,
儿童:[]
}
]
},
{
id:2,
儿童:[{
id:2.1,
儿童:[]
},
{
id:2.2,
儿童:[]
}
]
}
]
函数addToObj(itemsToAdd、parentId、obj){
for(设i=0;iaddToObj(项目ToAdd2.1,myObj)代码中有两个问题

  • 如果
    (obj.id==id)
    false
    ,则在循环中您不返回任何内容
  • 您应该检查循环之前是否存在
    obj.children
让myObj=[
{
id:1,
儿童:[
{
id:1.1,
儿童:[]
},
{
id:1.2,
儿童:[]
}
]
},
{
id:2,
儿童:[
{
id:2.1,
儿童:[]
},
{
id:2.2,
儿童:[]
}
]
}
]
代码中有两个问题:
-列表项
函数addToObj(itemToAdd、parentId、obj){

对于(设i=0;i),代码中有两个问题

  • 如果
    (obj.id==id)
    false
    ,则在循环中您不返回任何内容
  • 您应该检查循环之前是否存在
    obj.children
让myObj=[
{
id:1,
儿童:[
{
id:1.1,
儿童:[]
},
{
id:1.2,
儿童:[]
}
]
},
{
id:2,
儿童:[
{
id:2.1,
儿童:[]
},
{
id:2.2,
儿童:[]
}
]
}
]
代码中有两个问题:
-列表项
函数addToObj(itemToAdd、parentId、obj){
对于(设i=0;i当
如果(obj.id==id)
为false时,没有返回值当
如果(obj.id==id)
为false时,没有返回值