我需要一种在JavaScript中为数组查找max的干净方法。说它是arrayMax,然后:

arrayMax([]) # 0
arrayMax([1], [2]) # 2
arrayMax([-1]) # -1


谢谢 :)

我尝试过的

Math.max.apply(null, [1,2,3]) # 3


但这不适用于:

Math.max.apply(null, []) # -Infinity


请注意,它不是与this question的重复项,因为我希望空数组返回0,而不是-Infinity

最佳答案

您需要一个检查数组长度的函数:

function arrayMax(arr) {
    return arr.length ? Math.max.apply(null, arr) : 0;
};


以0开头的解决方案将对仅具有负值的数组产生错误的结果。

有了ES6支持,您可以避免使用apply方法,而可以使用传播运算符:

function arrayMax(arr) {
    return arr.length ? Math.max(...arr) : 0;
};

09-25 18:50