Всем привет, в задаче по клику нужно удалить из двух массивов names и price два объекта которые связаны одним id (если у кликнутого names id: 1, то удаляются 2 объекта массивов names с id: 1 и price с id: 1). Данный функционал в принципе отрабатывает но проблема в том, что если добавятся два объекта с одинаковыми id (данное заявление от меня не зависит), то в price удалятся все объекты имеющие одинаковый id. Как можно расширить данный функционал для того чтобы удалялись объекты с актуальным id в не зависимости от дублирования?
Cсылка:
https://jsfiddle.net/7kdegav0/3/
Код:
let names = [{
id: 1,
name: 'Jack'
},
{
id: 1,
name: 'Bob',
},
{
id: 2,
name: 'John'
}
]
let price = [{
id: 1,
price: 100,
},
{
id: 1,
price: 100
},
{
id: 2,
price: 150
}
]
// по факту при попытке удаления условно 'Bob' с id: 1, в price удалятся все объекты имеющие id: 1
function removeItem(e) {
if (e.target.classList.contains("close")) {
let info = e.target.closest(".item");
let idx = [...block.children].findIndex(
(el) => el.querySelector(".close") == e.target
);
deleteState(idx);
}
}
function deleteState(index) {
if (index > -1) {
const id = names[index].id;
price = price.filter(
(i) => i.id !== id
);
names.splice(index, 1);
}
}