首页 > 解决方案 > 从嵌套数组中递归删除对象

问题描述

我有这样的数组。无限数量的嵌套可能

const myArray = [
  {
   id: 1, 
   children: [
              { 
                id: 3,
                children: []
              }
             ]
  },
  {
   id: 2, children: []
  }
]

请帮助我按 id 删除任何对象并返回没有它的新数组。

标签: javascriptarraysobjectrecursion

解决方案


recursiveRemove 函数将递归地从数组中删除元素并返回新列表。

map 函数创建数组中项目的副本,如果您不需要保留原始数组的完整性,可以删除映射。

function recursiveRemove ( list, id ) {
    return list.map ( item => { return {...item} }).filter ( item => {
        if ( 'children' in item ) {
            item.children = recursiveRemove ( item.children, id );
        }
        return item.id !== id;
    });
}
const test1 = recursiveRemove ( myArray, 1);
const test2 = recursiveRemove ( myArray, 2);
const test3 = recursiveRemove ( myArray, 3);

推荐阅读