如何返回对象传递的对象和值

时间:2020-07-16 17:40:32

标签: javascript

myObj = {
  id: 1,
  children: [
    {
      id: 2,
      children: [
        {
          id: 3
        }
      ]
    },
    {
      id: 4,
      children: [
        {
          id: 5,
          children: [
            {
              id: 6,
              children: [
                {
                  id: 7,
                }
              ]
            }
          ]
        }
      ]
    },
  ]
}

以上对象如何创建功能。 在函数中,我将传递对象和id值重新调整该对象。 例如:

myFunction(myObj,4)
return: 
{
      id: 4,
      children: [
        {
          id: 5,
          children: [
            {
              id: 6,
              children: [
                {
                  id: 7,
                }
              ]
            }
          ]
        }
}
}
  
myFunction(myObj,6)


return 
{
              id: 6,
              children: [
                {
                  id: 7,
                }
              ]
            }

myFunction(myObj,7)

return 
{
                  id: 7,
                }

4 个答案:

答案 0 :(得分:0)

这是基于DFS

的递归函数
function findObject(obj, id) {
  if (obj.id === id) return obj;
  if (Array.isArray(obj.children)) {
    for(var i  = 0 ; i < obj.children.length;i++) {
      var res = findObject( obj.children[i], id)
      if(res){
        return res;
      }
    }
  }
  return null ;
}

console.log(findObject(myObj , 6))

答案 1 :(得分:0)

我们到了。

function myFunction(obj, idx) {
    if (obj.id === idx) return obj;
    else if (obj.hasOwnProperty('children') && Array.isArray(obj.children)) {
        for (const child of obj.children) {
            const res = myFunction(child, idx);
            if (res) return res;
        }
    } else {
        return null;
    }
}

console.log('MO:', myFunction(myObj, 4));

答案 2 :(得分:0)

您的解决方案将是:

let object={ id: 1, children: [ { id: 2, children: [ { id: 3 } ] }, { id: 4, children: [ { id: 5, children: [ { id: 6, children: [ { id: 7, } ] } ] } ] }, ] }
function check(obj,id){
    if(obj.id==id){
        return obj
   }
    else{
        for(let el of obj.children){
            if(el.id==id){
                return el
            }
        }
    }
}
const res=check(object,4);
console.log(res)

答案 3 :(得分:0)

您可以尝试

myObj = { id: 1, children: [ { id: 2, children: [ { id: 3 } ] }, { id: 4, children: [ { id: 5, children: [ { id: 6, children: [ { id: 7, } ] } ] } ] }, ] }
ob=[]
function myfunc(myObj,n){
  if(myObj.id==n) return myObj
  else if(myObj.children){
     myObj.children.forEach(o=>{
        if(o.id==n) ob.push(o)
        else myfunc(o,n)
    })
  }
  return ob[0]
}

console.log(myfunc(myObj,5))

相关问题