Chupachar
@Chupachar
front-end dev

Как удалить все объекты по дублирующим свойствам дочернего массива по клику на родительский?

Всем привет, нужно по клику на один из объектов 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. В общем подскажите пожалуйста как можно доработать данный функционал удаления?
  • Вопрос задан
  • 48 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы