找到最小或最大元素

如果你的陣列或類似陣列的物件是數字的,也就是說,如果它的所有元素都是數字,那麼你可以通過傳遞 null 作為第一個引數來使用 Math.min.applyMath.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 的詳細資訊,請參閱降低值