怎么根据 id 获取当前对象?

// 怎么根据 id 查找出树状结构中的对象

[
  {
      id:'1',
      children:[...]
  },
  {
      id:'2',
      children:[...]
  }
]
阅读 1.8k
3 个回答

我的建议是,先遍历一次树(准确来说是森林),建好 id 到结点的映射,之后只需从映射表中取出即可

const nodeMap = {}
const dfs = arr => arr?.forEach(node => {
  nodeMap[node.id] = node
  dfs(node.children)
})
dfs(arr)

console.log(nodeMap);
console.log(nodeMap['1']);
console.log(nodeMap['2']);
新手上路,请多包涵
const arr = []
const id = '1'
const obj = arr.find(item => item.id === id )
var arr = [
    {
        id: '1',
    },
    {
        id: '2',
        children: [{
            id: '3',
        },
        {
            id: '4',
        }]
    }
]
const treeFindById = (id, data) => {
    let result = null;
    for (let i = 0; i < data.length; i++) {
        if (data[i].id === id) {
            result = data[i];
            break;
        } else {
            result = treeFindById(id, data[i].children || [])
            if (result) {
                break;
            }
        }
    }
    return result;
}

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