树形结构遍历

发布于 2022-09-12 23:44:43 字数 938 浏览 10 评论 0

var originData = [{
id: 1,
name: 'name1',
children: [{
    id: 11,
    name: 'name11',
    children: [{
        id: 111,
        name: 'name111',
        children: [{
            id: 1111,
            name: 'name1111'
        }]
    }, {
        id: 112,
        name: 'name112'
    }]
}]
}, {
id: 2,
name: 'name2',
children: [{
    id: 21,
    name: 'name21',
    children: [{
        id: 211,
        name: 'name211'
    }, {
        id: 212,
        name: 'name212',
        children: [{
            id: 2121,
            name: 'name2121'
        }]
    }]
}]
}, {
id: 3,
name: 'name3',
children: [{
    id: 31,
    name: 'name31',
    children: [{
        id: 311,
        name: 'name311',
        children: [{
            id: 3111,
            name: 'name3111',
            children: [{
                id: 31111,
                name: 'name31111'
            }]
        }]
    }]
}]
}];

获取id===11 的name

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

讽刺将军 2022-09-19 23:44:43
function solution(list, target) {
  let r
  ;(function findNode(list, target) {
    for (let item of list) {
      if (item.id === target) {
        r = item
        return item
      }

      if (Array.isArray(item.children)) {
        findNode(item.children, target)
      }
    }
  })(list, target)

  return r
}

const case1 = solution(originData, 1)
const case2 = solution(originData, 111)
const case3 = solution(originData, 3111)

console.log('case1: ', case1);
console.log('case2: ', case2);
console.log('case3: ', case3);
夏了南城 2022-09-19 23:44:43

又来???树形遍历的问题在 SegmentFault 上都可以搜一堆出来……直接相似问题里就能找到答案。

不过还是来推荐一波:使用递归遍历并转换树形数据(以 TypeScript 为例)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文