我是javascript的新手,从网络教程中自学时遇到一些困难。请帮助我解决下面的问题。
问题:
编写一个函数,它接受两个或更多数组,并返回一个新数组,其中包含原始提供的数组的唯一值,按其原始顺序排序。
换句话说,所有数组中存在的值都应以其原始顺序包含在内,但是最终数组中不应有重复项。
唯一的数字应按其原始顺序排序,但是最终数组不应按数字顺序排序。
只使用Array.reduce来解决!您的解决方案应如下所示:
function unite(arr1, arr2, arr3) {
return arr1;
}
unite([1, 2, 3], [5, 2, 1, 4], [2, 1]);
我不明白如何在这里使用reduce。所有的互联网例子与这个相比都太容易了。
以下是两个相关链接: 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
未定义。你期望它是什么? - Bergivar sum = [1, 2, 3].reduce( function(total, num){ return total + num }, 0);
。看起来total是结果变量。所以,我按照那个例子,把anotherArray作为我的结果变量。这很令人困惑。 - stack1total
是第一个参数。 - zerkms