我需要一种在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;
};