js递归找出id所在的对象

根据value,找出value所在对象

const data = [{
    label: '北京',
    value: '110000',
    children: [{
        label: '北京市',
        value: '110100',
        children: [{
            label: '东城区',
            value: '110101'
            }, {
            label: '西城区',
            value: '110102'
            }]
        }]
}] 
阅读 3.9k
3 个回答

https://segmentfault.com/search?type=question&q=递归
image.png
image.png


好了,闲话不多说,我找到了历史回答,然后我又来混每日一答来了。

function findId(Arr, ID) {
  var _result = null;
  for (let i = 0; i < Arr.length; i++) {
    //console.log(Arr[i], Arr[i].id == ID)
    if (Arr[i].value == ID) return Arr[i];
    if (Arr[i].children) _result = findId(Arr[i].children, ID)
    if (_result != null) return _result;
  }
  return _result
}
data = [{
    label: '北京',
    value: '110000',
    children: [{
        label: '北京市',
        value: '110100',
        children: [{
            label: '东城区',
            value: '110101'
            }, {
            label: '西城区',
            value: '110102'
            }]
        }]
}] 
findId(data, '110101')

image.png

const data = [{
    label: '北京',
    value: '110100',
    children: [{
        label: '北京市',
        value: '110100',
        children: [{
            label: '东城区',
            value: '110101'
            }, {
            label: '西城区',
            value: '110102'
            }]
        }]
}] 

var foo = (data,id) => {
    for(let i=0;i<data.length;i++){
        var item = data[i];
        if(item.value == id){
            return {...item}
        }
        if(item.children && item.children.length){
            return foo(item.children,id)
        }
    }
}

console.log(foo(data,110101))

image.png

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题