Javascript 在数组的数组上使用map()中的reduce()
我正在处理一个freecodecamp挑战,我想知道为什么我的代码不工作,以及如何纠正它 目标是“返回一个数组,该数组由每个提供的子数组中的最大数组成。” 我尝试使用reduce作为映射函数映射输入数组:Javascript 在数组的数组上使用map()中的reduce(),javascript,Javascript,我正在处理一个freecodecamp挑战,我想知道为什么我的代码不工作,以及如何纠正它 目标是“返回一个数组,该数组由每个提供的子数组中的最大数组成。” 我尝试使用reduce作为映射函数映射输入数组: function largestOfFour(arr) { arr = arr.map(function(innerArray){ innerArray = innerArray.reduce(function(previousValue,currentValue){
function largestOfFour(arr) {
arr = arr.map(function(innerArray){
innerArray = innerArray.reduce(function(previousValue,currentValue){
return currentValue > previousValue ? currentValue : previousValue;
});
});
return arr;
}
console.log(largestOfFour([[4, 5, 1, 3],[1, 2, 3, 4]]));
当前输出为:[未定义,未定义]
如何修复代码?在
map
回调中,您应该返回reduce
的结果:
function largestOfFour(arr) {
return arr.map(function(innerArray){
return innerArray.reduce(function(previousValue,currentValue){
return currentValue > previousValue ? currentValue : previousValue;
});
});
}
注意有。有一个更简单的方法
function largestOfFour(arr) {
return arr.map(function(innerArray) {
return Math.max.apply(null, innerArray);
});
}
Math.max
可以用多个参数调用,如Math.max(3,4,5,6)
将返回6
使用apply
我们可以将参数数组传递给函数,如中所示。apply(thisValue,[3,4,5,6])
并执行相同的操作
由于有一个数组,我们可以映射外部数组,并返回
Math.max.apply(thisValue,innerray)
的结果,并且由于thisValue在这里不重要,只需传递null
就可以了。还有另一种解决方法
函数最大四(arr){
返回arr.map(函数(innerArray){
//按升序对内部数组排序
返回innerArray.sort(函数排序(a,b){
返回a>b;
}).pop();//您正在分配给innerArray
,但没有返回任何内容。太好了,谢谢!这确实清除了数组函数的工作方式。选择此选项是正确的,因为它回答了我的特定问题,即使我原来的方法不是最好的方法。谢谢,我在使用Math.max和map()时遇到困难,所以我选择了reduce()路线。这为将来清理了它。