Javascript 按父ID递归搜索子体

Javascript 按父ID递归搜索子体,javascript,arrays,lodash,Javascript,Arrays,Lodash,我有扁平阵列(扁平树)。如何使用Lodash库实现ParentID对子对象的递归搜索 例如,通过id=1,我需要获取“JavaScript”、“React”和“Vue” array: [{ id: 1, name: 'Development', parentIds: [], }, { id: 2, name: 'JavaScript', parentIds: [1] }, { id: 3, name: '

我有扁平阵列(扁平树)。如何使用Lodash库实现ParentID对子对象的递归搜索

例如,通过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]
   }]

参见下面的解决方案,我使用了库和递归函数:

函数foo(数组,pid,res=[],did=[]){ 数组=\过滤器(数组,(对象)=>{ if(u.includes(obj.parentId,pid)| 124;相交(obj.parentId,did).length){ res.push(对象名称); 推送(对象id); 返回false; }否则{ 返回true; } }); res=Array.from(新集合(res)); did=数组。从(新集合(did)); if(array.length>=did.length){ res.push(foo(数组、pid、res、did)); } 返回数组.from(新集合(res));
}到目前为止您尝试了什么?@DerekPollard我尝试在js上使用方法:函数getAllChildren(数组,父){array.forEach(函数(项){if(item.parentId==parent){childrenArray.push(item);getAllChildrenarray(数组,item.id);}}}对于parentId=1,这不应该只是JavaScript吗?关于链接副本:这个问题是由同一个作者提出的。然而,他将这个问题扩展到了任何深度,而不仅仅是一个级别更低的孩子。也许这个问题应该有自己的答案来解决这一差异?@JuanScolari是的,我必须让孩子们使用JavaScript并将所有内容推送到一个新数组中
    $(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);
    });