JavaScript 陣列最大值

JoeSnail發表於2017-12-27

JavaScript 陣列最大值

在js中可以使用Math.max()獲取最大值。

如:

console.log(Math.max("1","11","22"));
//output:22

但是如果我們傳遞一個陣列的話,上述程式碼並不能正確輸出

如:

var arrs=[1,2,5,10,30,99,22];
console.log(Math.max(Math,arrs));
//output:NaN

apply

使用apply方法可以傳遞一個陣列,獲取到最大值。

var arrs=[1,2,5,10,30,99,22];
console.log(Math.max.apply(Math,arrs));
//console.log(Math.max.apply(null,arrs));
//output: 99

什麼是apply

apply() 方法呼叫一個函式, 其具有一個指定的this值,以及作為一個陣列(或類似陣列的物件)提供的引數。

比如A有一個方法,而B沒有,但是這時B要用到A的方法,可以把A的方法借給B使用。就用到了apply

A.fun.apply(B,args);

apply(thisArg,[argsArray])該方法有兩個引數。

第一個引數是函式借給的物件

第二個引數是一個陣列為該函式的引數。


map

map() 方法建立一個新陣列,其結果是該陣列中的每個元素都呼叫一個提供的函式後返回的結果。

如:

var numbers = [1, 5, 10, 15];
var doubles = numbers.map( x => x ** 2);
console.log(doubles);
//output:[2,10,20,30]

如果我們有一個物件陣列,要獲取物件陣列中的屬性的最大值。可以使用map獲取到該屬性的陣列,再使用Math.max.apply來獲取最大值。

如:

var list=[{name:"n1",age:1},{name:"n1",age:14},{name:"n1",age:31},{name:"n1",age:10},{name:"n1",age:22},];
console.log(Math.max.apply(null,list.map(x=>x.age)));
//output:31

相關文章