javascript - 按父 ID 递归搜索后代

标签 javascript arrays lodash

我有平面阵列(展平树)。如何使用 Lodash 库通过 parentIds 实现对 child 的递归搜索?

例如,通过 id = 1 我需要获取“JavaScript”、“React”和“Vue”。

array: 
  [{
    id: 1,
    name: 'Development',
    parentIds: [],
  },
  { 
    id: 2,
    name: 'JavaScript',
    parentIds: [1] 
  },
  { 
    id: 3,
    name: 'React',
    parentIds: [2]
   },
   {
     id: 4,
     name: "Vue",
     parentIds: [2]
   }]

最佳答案

    $(function () {
        var array =
      [{
        id: 1,
        name: 'Development',
        parentIds: [],
      },
      {
        id: 2,
        name: 'JavaScript',
        parentIds: [1]
      },
      {
        id: 3,
        name: 'React',
        parentIds: [2]
       },
       {
         id: 4,
         name: "Vue",
         parentIds: [2]
       }]

        var getId = function (arrayItems, id) {
            if (arrayItems) {
                for (var i in arrayItems) {
                    if (arrayItems[i].id == id) {
                        return arrayItems[i];
                    };
                    var found = getId(arrayItems[i].items, id);
                    if (found) return found;
                }
            }
        };

        var searchedItem = getId(array, 3);
        alert(searchedItem.name);
    });

关于javascript - 按父 ID 递归搜索后代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55839046/

相关文章:

arrays - 如何从哈希数组中过滤掉哈希?

java - 按句点将 String 拆分为 String[] 但返回空数组

javascript - 使用父值展平数组

javascript键检测不添加最新字符

javascript - 内联函数通过 id 调用自动元素

javascript - 将真/假数组与其他数组进行比较

javascript - 计算 JavaScript 数组中对象的出现次数

javascript - 在 javascript 函数中使用类似 Haskell 的函数式累加器

javascript - 如何使 alasql 在我的 ASP.NET Web 应用程序中工作?

javascript - 滚动条并刷新 JavaScript 中的一行