javascript - 从嵌套数组中递归删除对象
问题描述
我有这样的数组。无限数量的嵌套可能
const myArray = [
{
id: 1,
children: [
{
id: 3,
children: []
}
]
},
{
id: 2, children: []
}
]
请帮助我按 id 删除任何对象并返回没有它的新数组。
解决方案
该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);
推荐阅读
- sql - Oracle 从 BLOB 获取 XML
- ruby - 句子旋转程序不起作用红宝石
- facebook - 社交名流,facebook auth 重定向 URI 未在应用程序中列入白名单
- perl - perl - 替代模板系统的包模块
- vue.js - Vue js:Axios 发布 500 内部服务器错误
- c++ - 当我调用指针成员函数时,参数的混合值
- xamarin.android - 来自错误线程的 MvvmCross Realm 访问
- angularjs - 登录 Azure 活动 B2B 目录时无法获取声明信息
- c# - XmlReader - 如何更新进度条
- jquery - 使用 Jquery 设置最大字符数?