找到最小或最大元素
如果你的数组或类似数组的对象是数字的,也就是说,如果它的所有元素都是数字,那么你可以通过传递 null
作为第一个参数来使用 Math.min.apply
或 Math.max.apply
,并将你的数组作为第二个参数。
var myArray = [1, 2, 3, 4];
Math.min.apply(null, myArray); // 1
Math.max.apply(null, myArray); // 4
Version >= 6
在 ES6 中,你可以使用 ...
运算符来扩展数组并获取最小或最大元素。
var myArray = [1, 2, 3, 4, 99, 20];
var maxValue = Math.max(...myArray); // 99
var minValue = Math.min(...myArray); // 1
以下示例使用 for
循环:
var maxValue = myArray[0];
for(var i = 1; i < myArray.length; i++) {
var currentValue = myArray[i];
if(currentValue > maxValue) {
maxValue = currentValue;
}
}
Version >= 5.1
以下示例使用 Array.prototype.reduce()
查找最小值或最大值:
var myArray = [1, 2, 3, 4];
myArray.reduce(function(a, b) {
return Math.min(a, b);
}); // 1
myArray.reduce(function(a, b) {
return Math.max(a, b);
}); // 4
Version >= 6
或使用箭头函数:
myArray.reduce((a, b) => Math.min(a, b)); // 1
myArray.reduce((a, b) => Math.max(a, b)); // 4
Version >= 5.1
为了概括 reduce
版本,我们必须传入一个初始值来覆盖空列表情况:
function myMax(array) {
return array.reduce(function(maxSoFar, element) {
return Math.max(maxSoFar, element);
}, -Infinity);
}
myMax([3, 5]); // 5
myMax([]); // -Infinity
Math.max.apply(null, []); // -Infinity
有关如何正确使用 reduce
的详细信息,请参阅降低值 。