Сравнить 2 массива и удалить значения из 1
Есть 2 массива. Как сравнить их и в массиве ups оставить только значения те значения, которые есть в массиве arr?
let upd = [1, 2, 3, 4, 5, 6, 7, 8, 9]
let arr = [1, 9];
for (let el of upd) {
if (!arr.includes(el)) {
upd.splice(upd.indexOf(el), 1);
}
}
console.log(upd)
метод splice не работает, после первого совпадения на цифре 2 порядок индексов сбиваеться
Ответы (1 шт):
Автор решения: SwaD
→ Ссылка
Можно воспользоваться методом filter для фильтрации массива и методом includes для поиска нужных элементов
let upd = [1, 2, 3, 4, 5, 6, 7, 8, 9]
let arr = [1, 9];
upd = upd.filter(i => !arr.includes(i));
console.log(upd)
Если массив менять нельзя(в примере выше все таки создается новый массив вместо прежднего), то можно воспользоваться методом splice, только обход надо делать с конца, что бы нумерация была правильной
const upd = [1, 2, 3, 4, 5, 6, 7, 8, 9]
const arr = [1, 9];
for (let i = upd.length -1; i >=0; i--) {
if (arr.includes(upd[i])) upd.splice(i,1);
}
console.log(upd)