@Haykeloff

В чем ошибка в функции?

Хотел реализовать функцию, которая принимает на вход два массива и убирает из первого массива все что находится во втором. Но код не работает правильно, может кто подскажет в чем проблема?
function arrayDiff(a, b){
    a.forEach(e => {
        if(b.includes(e)){
            a.splice(a.indexOf(e), 1);
        }
    });
    return a;
}
  • Вопрос задан
  • 83 просмотра
Решения вопроса 1
hzzzzl
@hzzzzl
потому что ты из массива "а" удаляешь элементы в то же время, когда по нему проходишься последовательно в forEach, то есть цикл ломается

b.filter(bb => !a.includes(bb))

---

кстати функция внутри forEach вторым аргументом получает индекс элемента

a.forEach((element, index) => {
       ...
    });
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Вот вам вариант попроще
let diff = arr1.filter(x => !arr2.includes(x));
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы