Получение разницы между массивами
Решаю задачи с codewars. Необходимо получить разницу массивов а - b. В первом случае не отрабатывает filter с данными ниже аргументами.
function arrayDiff(a, b) {
let arr = [];
for (let i = 0; i < b.length; i++){
arr = a.filter(item => item !== b[i]);
}
return arr;
}
console.log(arrayDiff([1, 2, 2], []));
Во втором случае со splice.
function arrayDiff(a, b) {
let arr = [];
for (let i = 0; i < a.length; i++) {
for (let j = 0; j < b.length; j++){
if (a[i] == b[j]) {
a.splice(i, 1);
}
}
}
return a;
}
console.log(arrayDiff([1, 2, 2], [2]));
Хорошо что есть тесты, но уже крыша едет)) Помогите решить, пожалуйста!
Ответы (1 шт):
Автор решения: Alexandr
→ Ссылка
В первом случае вы запускаете цикл, и на каждой итерации перезаписываете результат отработки фильтра, в итоге получаете значение с последней итерации. Во втором вы почему то хотите вернуть переменную 'a', но по вашему коду предполагаю, что хотите вырезать переменную и вставить ее в массив arr, который задекларировали ранее?
Вот измененное решение вашего первого варианта
function arrayDiff(a, b) {
let arr = a;
for (let i = 0; i < b.length; i++){
arr = arr.filter(item => item !== b[i]);
}
return arr;
}
console.log(arrayDiff([1, 2, 2], []));