Javascript Lodash:如何使用id从数组中删除项或嵌套项?
我有一个如下所示的数组:Javascript Lodash:如何使用id从数组中删除项或嵌套项?,javascript,arrays,multidimensional-array,lodash,Javascript,Arrays,Multidimensional Array,Lodash,我有一个如下所示的数组: [ { "id": "denuzi", "sub": [ {"id": "s4p58o"}, {"id": "xzbqi"}, ], }, { "id": "4rcodm", "sub": [], } ] 我试图做的是使用提供的id从数组或嵌套数组中删除项 e、 g.如果提供了denuzi,则移
[
{
"id": "denuzi",
"sub":
[
{"id": "s4p58o"},
{"id": "xzbqi"},
],
},
{
"id": "4rcodm",
"sub": [],
}
]
我试图做的是使用提供的id从数组或嵌套数组中删除项
e、 g.如果提供了denuzi
,则移除整个第一个对象;如果提供了s4p58o
,则仅移除第一个对象子数组中的对象
我知道我可以使用以下代码删除整个对象:
_.remove(this.items, function(item) {
return item.id !== id;
});
但我不知道如何进行检查以删除子项?只需使用
var列表=[
{
“id”:“denuzi”,
“sub”:
[
{“id”:“s4p58o”},
{“id”:“xzbqi”},
],
},
{
“id”:“4rcodm”,
“分”:[…],
}
]
const result=list.filter(a=>a.id!=='denuzi');
控制台日志(结果)代码>不使用lodash
let数据=[
{
“id”:“denuzi”,
“sub”:
[
{“id”:“s4p58o”},
{“id”:“xzbqi”},
],
},
{
“id”:“4rcodm”,
“分”:[…],
}
]
函数删除(数据,删除ID){
返回数据
.filter(({id})=>id!==removeId)//如果父对象的id与removeId匹配,则将其删除
.map({id,sub})=>({id,sub:sub.filter({id}=>id!==removeId)})//用缺少子对象的新子数组替换子数组
}
日志(删除(数据,“s4p58o”);
log(remove(data,“denuzi”)
您可以通过检查id
或再次调用sub
来采用迭代和递归的方法。如果找到,请退出
函数删除(数组,id){
返回数组。some((o,i,a)=>o.id==id
?a.拼接(i,1)
:移除(o.sub | |[],id)
);
}
var数组=[{id:“denuzi”,sub:[{id:“s4p58o”},{id:“xzbqi”}]},{id:“4rcodm”,sub:[]};
移除(阵列“s4p58o”);
console.log(数组);
移除(数组“denuzi”);
console.log(数组)代码>
作为控制台包装{max height:100%!important;top:0;}
它不适用于嵌套结构,例如,您的解决方案无法删除您的s4p58o
。