Есть массив:
const arr1 = [
{
id: 1,
items: [{ id: 2, parId: '1' }, { id: 2, parId: '1' }],
},
{
id: 2,
items: [{ id: 3, parId: '2' }, { id: 4, parId: '2' }],
},
...
];
Приходит объект, который надо убрать. Например:
{ id: 3, parId: '2' }
.
Нужно отфильтровать массив, чтобы осталось
[
{
id: 1,
items: [{ id: 2, parId: '1' }, { id: 2, parId: '1' }],
},
{
id: 2,
items: [{ id: 4, parId: '2' }],
},
...
];
На данный момент реализовал это через forEach и filter:
function removeItem(list, item) {
const array = [];
list.forEach(
k =>
k.id === item.parId
? array.push({
...k,
items: _filter(k.items, i => i.id !== item.id),
})
: array.push(k),
);
return array;
}
Но думаю, можно лучше это сделать.