使用reduce方法返回ArraysPassed中的最大数



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),
[]
);

这会奏效的。

最新更新