DJWOMS1
@DJWOMS1
Веб-программист

Как сравнить два массива и удалить из второго совпадающие элементы JS?

Есть два массива. К примеру
var  arr = ['google.com', 'vk.com', 'mail.ru']
var arr2 = ['facebook.com', 'google.com', 'vk.com', 'ya.ru', 'mail.ru']

Нужно сравнить первый массив со вторым и удалить из второго элементы которые есть в первом.
  • Вопрос задан
  • 4824 просмотра
Решения вопроса 1
sergiks
@sergiks Куратор тега JavaScript
♬♬
arr2 = arr2.filter(e => !~arr.indexOf(e));
// facebook.com,ya.ru


Метод массива filter() создаёт новый массив, в котором остаются только те элементы исходного, для которых функция проверки вернула true.

Внутри этой функции проверяем, есть ли очередной элемент в массиве arr: вернёт ли indexOf() что-то отличное от -1. Для короткой записи такой проверки удобно использовать побитовое НЕ ~ которое даст 0 в единственном случае, когда операнд равен -1. Его отрицание ! даст true в том же единственном случае. Итого эта функция вернёт true только, если элемент не найден в массиве arr.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
kryamk
@kryamk
let obj = [{ id: 1, name: 'abc' }, { id: 2, name: 'abc' }, { id: 3, name: 'abc' }, { id: 4, name: 'abc' } ];
let idArr = [1, 2]
let data = obj.filter(item => !idArr.includes(item.id));

Тут стащил
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы