Фильтр массива
Привет Массив
fromStorage =[{ "day": "2", "month": "9" }, { "day": "9", "month": "9" }, { "day": "16", "month": "9" }, { "day": "5", "month": "10" }, { "day": "12", "month": "10" }, { "day": "19", "month": "10" }] Я кликаю по элементу, который имеет соответствующие дата атрибуты. Мне нужно удалить соответствующий объект из массива. ... <div data-day="16" data-month="9">16</div> ... Если я делаю так let filtered = fromStorage.filter(o => { return (o.day !== e.dataset.day && o.month == e.dataset.month) }); то у меня в массиве остаётся только два объекта. Так как удаляется тот, который я кликнул и те у которых не тот месяц. Как правильно сделать? |
let filtered = fromStorage.filter(o => { return !(o.day === e.dataset.day && o.month === e.dataset.month) }); |
Да нет. Так вообще остаётся только тот по которому кликнул. А надо наобород его исключить.
|
Всё, нашёл)
let filtered = fromStorage.filter(o => { return (o.day !== e.dataset.day && e.dataset.month) }); |
Цитата:
Цитата:
Буде еще один элемент { "day": "16", "month": "10" },и он тоже удалится. |
Ну не знаю). У меня работает так, как я написал.
|
Цитата:
<body> <div data-day="16" data-month="9">16</div> <script> const fromStorage =[{ "day": "2", "month": "9" }, { "day": "9", "month": "9" }, { "day": "16", "month": "9" }, { "day": "5", "month": "10" }, { "day": "12", "month": "10" }, { "day": "16", "month": "10" }, { "day": "19", "month": "10" }]; const e = document.querySelector('div'); e.addEventListener('click', () => { console.log(fromStorage.length); let filtered = fromStorage.filter(o => { return (o.day !== e.dataset.day && e.dataset.month); }); console.log(filtered) }) </script> </body> Сколько элементов удалилось? |
А так удаляется только тот, что нужен
<body> <div data-day="16" data-month="9">16</div> <script> const fromStorage =[{ "day": "2", "month": "9" }, { "day": "9", "month": "9" }, { "day": "16", "month": "9" }, { "day": "5", "month": "10" }, { "day": "12", "month": "10" }, { "day": "16", "month": "10" }, { "day": "19", "month": "10" }]; const e = document.querySelector('div'); e.addEventListener('click', () => { console.log(fromStorage.length); let filtered = fromStorage.filter(o => { return !(o.day === e.dataset.day && o.month === e.dataset.month) }); console.log(filtered) }) </script> </body> |
const index = fromStorage.findIndex((o) => { return o.day === e.dataset.day && o.month === e.dataset.month; }); fromStorage.splice(index, 1); console.log(fromStorage); Но мутации - это плохо. |
Часовой пояс GMT +3, время: 09:09. |