Всем привет, нужно по клику на один из объектов parent удалить все объекты child имеющие cовпадения по значениям num. Есть 2 массива с объектами:
const parent = [{
num: 1,
},
{
num: 2,
}
]
const child = [{
num: 1,
},
{
num: 1,
},
{
num: 2,
}
]
В данном случае я "кликаю" условно по
parent.num: 1
, и у меня должны удалиться все num === 1 у child, чтобы осталось:
const child = [{
{
num: 2,
}
]
В одном из вариантов я попробовал сделать таким образом:
const index = [...info.children].indexOf(item); // кликаю по карточке и нахожу её индекс
const num = parent[index].num; // актуализирую num, например "num ===1"
const idxDel = child.filter((item) => {
return num === item.num; //ищу совпадения в дочернем массиве
});
child.splice(idxDel, idxDel.length); //удаляю все совпадающие объекты в актуальном кол-ве
Оно вроде как удаляет по актуальному количеству
idxDel.length
, но почему то только верхние индексы в массиве скажем так, не те которые кликнул.
так же я пробовал с помощью
const idxDel = child.findIndex((item) => item.num === num);
child.splice(idxDel, 1);
Удаляет правильно по
idxDel
, но только 1 элемент поскольку findIndex ищет первое совпадение да и число должно быть динамичным как в моменте с filter
idxDel.length
. В общем подскажите пожалуйста как можно доработать данный функционал удаления?