小编leo*_*rd0的帖子

嵌套数组上的递归过滤器

我需要根据查询过滤一个嵌套结构,看起来像这样。我需要返回所有对象,包括与对象名称中的查询字符串匹配的子树的父对象。请帮忙,我被卡住了。

[
   {
     name: 'bob',
     type: 1,
     children: [
       {
         name: 'bob',
         type: 2,
         children: [
           {
             name: 'mike',
             type: 3,
             children: [ 
               {
                 name:'bob',
                 type: 7,
                 children: []
               },
               {
                 name: 'mike',
                 type: 9,
                 children: []
               }
             ]
           }
         ]
       },
       {
         name: 'mike',
         type: 2
       }
     ]
   }
 ]
Run Code Online (Sandbox Code Playgroud)

现在我能够递归地在树中找到匹配项,但是该函数在第一次匹配时返回对象,并且不会在同一对象的子级别上进行更深入的搜索。任何建议,我如何修改代码以递归搜索所有级别?

  return tree.map(copy).filter(function filterNested(node) {
    if (node.name.toLowerCase().indexOf(query) !== -1) {
      return true;
    }

    if (node.children) {
      return (node.children = node.children.map(copy).filter(filterNested))
        .length;
    }
  });
Run Code Online (Sandbox Code Playgroud)

如果我正在搜索查询 'bob',预期的结果应该是,

javascript arrays recursion filter

6
推荐指数
1
解决办法
1154
查看次数

标签 统计

arrays ×1

filter ×1

javascript ×1

recursion ×1