Фильтр массива
Привет Массив
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, время: 22:29. |