树形结构遍历

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

阅读 2.5k
2 个回答
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);
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题