JavaScript 数组最大值
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