Всем доброго времени, вопрос касается удаления объектов из localStorage. Имеется корзина в которую при клике отрендерилась карточка с данными и записалась в localStorage под ключом "cabins" который получаю c помощью getItem как currentTariff, при клике на "крестик" карточка удаляется вместе с e.target объектом из массива currentTariff в localStorage. функционал удаления объектов из currentTariff отрабатывает правильно. При переходе на следующую страницу и заполнении формы добавляется еще один массив passengers в localStorage. При возвращении на страницу с корзиной нужно реализовать правильное удаление объектов из массивов currentTariff и passengers на основе их общего ключа cabinCategoryID. Подскажите пожалуйста как это можно реализовать.
// 2 массива из localStorage
let currentTariff = [{
cabinCategoryID: 1,
},
{
cabinCategoryID: 2,
}
]
let passengers = [{
name: 'Bob',
cabinCategoryID: 1,
},
{
name: 'Jack',
cabinCategoryID: 2,
}
]
/* let currentTariff = JSON.parse(localStorage.getItem("cabins") || "[]");
let passengers = JSON.parse(localStorage.getItem("Passengers") || "[]"); */
function updateState() {
localStorage.setItem("cabins", JSON.stringify(currentTariff)); //создание ключа "cabins"
}
function deleteState(index, idxPass) { // функия удаления объектов из массивов currentTariff и passengers
if (index > -1) {
currentTariff.splice(index, 1);
updateState();
}
if (idxPass > -1) { // вот тут не получается удалять "выбранные объекты"
let passDel = passengers.splice(idxPass, 1);
console.log("delete pass: ", passDel);
}
}
function removeItem(e) { // функция удаления карточки
if (e.target.classList.contains("tariff__port-close")) { // "крестик" на карточке
let info = e.target.closest(".sidebar-item"); // сама карточка
let idxCabin = [...sidebarInfo.children].findIndex( // удаление карточки из рендера
(el) => el.querySelector(".tariff__port-close") == e.target
);
// организация удаления второго объекта из массива passengers
// нужно удалить из двух массивов currentTariff и passengers объекты с одинаковым cabinCategoryID
let idxPass = currentTariff.findIndex((cabin) => // сравниваю ключи из двух массивов
passengers.some(
(cabinPass) => cabin.cabinCategoryID === cabinPass.cabinCategoryID
)
);
deleteState(idxCabin, idxPass);
info.remove();
}
}