Удаление элементов массива у другого массива
Доброго времени суток!
Необходимо произвести удаление элементов из первого массива, которые находятся во втором массиве. Есть первый массив, которые содержит ID товаров, которые выделены. const favorite = document.getElementsByClassName('activeFavorite'); for (inp of favorite) { if (inp.getElementsByClassName('activeFavorite')) { activeFavoriteID.push(inp.id); for (var i = activeFavoriteID.length - 1; i >= 0; i--)//удаление дублей { if (activeFavoriteID.indexOf(activeFavoriteID[i]) != i) activeFavoriteID.splice(i, 1); } } } Есть второй массив, который содержит ID товаров, у которых было снято выделение: const favoriteRemove = document.getElementsByClassName('remove'); for (inp of favoriteRemove) { if (inp.getElementsByClassName('remove')) { activeFavoriteIDRemove.push(inp.id);//удаленные for (var i = activeFavoriteIDRemove.length - 1; i >= 0; i--)//удаление дублей { if (activeFavoriteIDRemove.indexOf(activeFavoriteIDRemove[i]) != i) activeFavoriteIDRemove.splice(i, 1); } } } Подскажите, пожалуйста, как из activeFavoriteID удалить activeFavoriteIDRemove ? Можно ли сделать удаление с помощью filter()? |
Цитата:
https://www.cyberforum.ru/nodejs/thread2438814.html Или вот... https://fooobar.com/questions/68475/...-another-array |
Спасибо большое на наводку.
Буду пробовать ) |
Можно и фильтровать
res = activeFavoriteID.filter (id => activeFavoriteIDRemove.indexOf(id) == -1) for (inp of favorite) { if (inp.getElementsByClassName('activeFavorite')) { activeFavoriteID.push(inp.id); for (var i = activeFavoriteID.length - 1; i >= 0; i--)//удаление дублей { if (activeFavoriteID.indexOf(activeFavoriteID[i]) != i) activeFavoriteID.splice(i, 1); } } } А откуда дубли? Может сразу делать, что бы не было дублей for (inp of favorite) { if (inp.getElementsByClassName('activeFavorite')) { if (activeFavoriteID.indexOf(inp.id) == -1) activeFavoriteID.push(inp.id); } } |
_marisha,
:-? favorite = document.querySelectorAll(".activeFavorite:not('.remove')") |
Цитата:
activeFavoriteID = activeFavoriteID.filter( ( el ) => !activeFavoriteIDRemove.includes( el ) ); |
Цитата:
Т.е. есть список товаров и (к примеру) недавно просмотренные товары. Теперь думаю, стоит ли вообще с дублями бороться :-? |
Цитата:
activeFavoriteID.push(inp.id); Все идентификаторы (id=...) на странице должны быть уникальны. Дубли могут быть, если только вы дважды отправляете в массив идентификатор одного и того же элемента. activeFavoriteID = activeFavoriteID.filter( ( el ) => !activeFavoriteIDRemove.includes( el ) ); В этом случае, если в activeFavoriteID были дубли до фильтрации, то они там могут и остаться, если не входят в удаляемые.. |
Цитата:
Но даже если выбирать из разных областей один и тот же товар на дубликаты можно не обращать внимания, если передавать серверу информацию о товаре под id товара как первичным ключом. Массив не может содержать дубликаты ключей и никаких дубликатов на сервере не будет. |
Часовой пояс GMT +3, время: 23:21. |