freecodecamp中有一个问题如下:
返回一个数组,该数组由每个提供的子数组中的最大数字组成。为了简单起见,所提供的阵列将恰好包含4个子阵列。
记住,您可以使用简单的for循环遍历数组,并使用数组语法arr[i]访问每个成员。
因此,四个中最大的([[4,5,1,3],[13,27,18,26],[32,35,37,39],[10001857,1]](;
应返回[5,27,391001]。
有很多方法可以完成上面的map((方法是最短的。然而,我正在尝试使用reduce方法来实现同样的效果,但无法做到这一点。我的方法如下。
function largestOfFour(arr) {
return arr.reduce((maxArray,item) => maxArray.push(Math.max(...item)),[]);
}
但控制台中出现错误,显示
maxArray.push is not a function
请找到错误。
.push(...)
返回数组的新length
,而不是数组本身,因此在第二个循环中,您要推到一个数字而不是数组,因此您需要更改箭头函数:
const largestOfFour = arr => arr.reduce(
(max, current) => (max.push(Math.max(...current)), max),
[]
);
这会奏效的。