Сравнить 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)

→ Ссылка