Я новичок в javascript, и у меня есть немного проблем, изучая его сам из веб-уроков. Пожалуйста, помогите мне решить проблему ниже.Использование javascript array.reduce для удаления дубликатов
Проблема:
Написать функцию, которая принимает два или более массива и возвращает новый массив уникальных значений в порядке исходных предоставленных массивов.
Другими словами, все значения, присутствующие во всех массивах, должны быть включены в их первоначальный порядок, но без дубликатов в конечном массиве.
Уникальные номера должны быть отсортированы по их первоначальному заказу, но окончательный массив не следует сортировать в цифровом порядке.
Используйте только Array.reduce, чтобы решить эту проблему! Это то, что ваше решение должно выглядеть следующим образом:
function unite(arr1, arr2, arr3) {
return arr1;
}
unite([1, 2, 3], [5, 2, 1, 4], [2, 1]);
Я не могу понять, как я могу использовать сократить здесь. Все интернет-примеры настолько легки по сравнению с этим. https://www.airpair.com/javascript/javascript-array-reduce http://adripofjavascript.com/blog/drips/boiling-down-arrays-with-array-reduce.html
Мое неправильное решение:
function arrayDiff(resultArray, element){
var idx = anotherArray.indexOf(element);
if(idx != -1){
resultArray.push(element);
return resultArray;
}
}
function unite(arr1, arr2, arr3) {
var arr = [];
var r1 = arr1.reduce(arrayDiff);
var r2 = arr2.reduce(arrayDiff);
var r3 = arr3.reduce(arrayDiff);
arr.concat(r1).concat(r2).concat(r3);
return arr;
}
r = unite([1, 2, 3], [5, 2, 1, 4], [2, 1]);
console.log(r);
Ошибка: ReferenceError: AnotherArray не определен
хорошо, это потому, что 'anotherArray' не определен. На что должна ссылаться эта переменная? – zerkms
Да, 'anotherArray' не определен. Чего вы ожидали? – Bergi
@Bergi - Я только что увидел здесь пример - 'var sum = [1, 2, 3] .reduce ( function (total, num) {return total + num}, 0);'. Похоже, что итоговая переменная. Итак, я последовал этому примеру и сделал anotherArray в качестве моей переменной result. Это смущает. – stack1