js獲取陣列的最大值和最小值程式碼例項

antzone發表於2017-04-10

獲取陣列中的最大值和最小值這個需求還是非常多的。

下面就通過程式碼例項介紹一下javascript是如何實現此功能。

我們可以通過prototype原型來擴充套件兩個方法:

一.獲取最大值:

[JavaScript] 純文字檢視 複製程式碼
Array.prototype.max = function() {
  var max = this[0];
  var len = this.length;
  for (var index = 1; index < len; index++) {
    if (this[index] > max) {
      max = this[index];
    }
  }
  return max;
}
 
Array.prototype.min = function() {
  var min = this[0];
  var len = this.length;
  for (var index = 1; index < len; index++) {
    if (this[index] < min) {
      min = this[index];
    }
  }
  return min;
}
console.log([1,2,3].max());
console.log([1,2,3].min());

上面的程式碼實現了我們的要求,原理極其的簡單。

無非是通過遍歷,挨個比較元素,最終得出最大值或者最小值。

不過上面的程式碼還是有點風險的,那就是,我們使用的其他庫可能也是用同樣的名稱來修改原型。

所以我們需要進行以下判斷,程式碼如下:

[JavaScript] 純文字檢視 複製程式碼
if(typeof Array.prototype['max'] == 'undefined') {
  Array.prototype.max = function () {
    //code
  }
}

其實上面的實現方式並不是太理想,還有更為簡便的方式。

程式碼例項如下:

[JavaScript] 純文字檢視 複製程式碼
Array.prototype.max = function () {
  return Math.max.apply({}, this)
}
Array.prototype.min = function () {
  return Math.min.apply({}, this)
}
console.log([1, 2, 3].max());
console.log([1, 2, 3].min())

相關閱讀:

(1).prototype屬性可以參閱javascript prototype原型一章節。

(2).Math.max()方法可以參閱Math.max()一章節。

(3).Math.min()方法可以參閱Math.min()一章節。

(4).apply()方法可以參閱js apply()一章節。

相關文章