tree结构,查找从子元素到祖先元素到节点

2021-03-02  本文已影响0人  六月_1af7
var nodes = [
    {
      "id": 1, 
      "children": [
        {
          "id": 3,
          "children": [
            {"id": 4},
            {"id": 9}
          ]
        },
        {
          "id": 10
        },
      ]
    },
    {
      "id": 2
    },
    {
      "id": 6,
      "children" : [
        { "id": 5},
        { "id": 7},
        { "id": 8}
      ]
    }
];
// 
function findPathById(arr, id, key, resultTemp = []) {
    for (let index = 0; index < arr.length; index++) {
        const element = arr[index];
        let result = resultTemp.slice() // 浅拷贝一下
        result.push(element[key])
        if (element[key] === id) {
            return result
        }
        if (element.children) {
            const findResult = findPathById(element.children, id, key, result)
            if (findResult) {
                return findResult
            }
        }
    }
}
console.log(findPathById(nodes, 9, 'id')) //  [1,3,9]
上一篇 下一篇

猜你喜欢

热点阅读