獲取數組中最大值/最小值的三種基礎方法

獲取數組中的最大值/最小值

  • 例如:獲取以下數組的最小值
let ary = [12, 24, 13, 8, 35, 15];
複製代碼

方法一:基於sort排序

先排序,第一項爲最小值,最後一項是最大值,選取首項就是咱們須要的javascript

ary.sort(function (a, b) {
	return a - b;
});
let min = ary[0];
let max = ary[ary.length - 1];
console.log(min, max);//=>8,35
複製代碼

方法二:利用Math.min/max

Math.min/max要求咱們傳遞的數據是一項一項傳遞進來的,獲取一堆數中的最大最小,而不是獲取一個數組中的最大最小;java

let min = Math.min([12, 24, 13, 8, 35, 15]);
console.log(min);//=> NaN

let min = Math.min(12, 24, 13, 8, 35, 15);
console.log(min); //=>8
複製代碼

因此在咱們使用以前須要先想辦法將數組以數字的形式一個一個傳進去數組

  • 一、基於ES6的展開運算符
let min = Math.min(...ary);
console.log(min);//=> 8
複製代碼

因爲此方法爲ES6語法,因此不兼容低版本瀏覽器瀏覽器

  • 二、利用apply方法實現
    • 因爲咱們主要利用的是apply以數組的方式傳遞參數的特性,因此this指向誰並不重要
let min = Math.min.apply(Math,ary);//=> 這裏咱們的this指向並不重要,之因此寫成Math由於是Math方法執行,方便記憶
console.log(min);//=> 8
複製代碼

方法三:假設法

假設第一個是最大的,讓數組中的每一項分別和當前假設的值比較,若是比假設的值大,則把最大的值設爲新的假設值,繼續向後比較便可app

let max = ary[0];
for (let i = 1; i < ary.length; i++) {
	let item = ary[i];
	item > max ? max = item : null;
}
//=> for 循環 也能夠改寫爲 forEach
ary.forEach(item => {
	item > max ? max = item : null;
});
console.log(max); //=>35
複製代碼

相關文章
相關標籤/搜索