在js中能够使用Math.max()
获取最大值。javascript
如:java
console.log(Math.max("1","11","22")); //output:22
可是若是咱们传递一个数组的话,上述代码并不能正确输出数组
如:app
var arrs=[1,2,5,10,30,99,22]; console.log(Math.max(Math,arrs)); //output:NaN
使用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() 方法调用一个函数, 其具备一个指定的this值,以及做为一个数组(或相似数组的对象)提供的参数。this
好比A有一个方法,而B没有,可是这时B要用到A的方法,能够把A的方法借给B使用。就用到了apply
。code
A.fun.apply(B,args);
apply(thisArg,[argsArray])
该方法有两个参数。对象
第一个参数是函数借给的对象ip
第二个参数是一个数组为该函数的参数。console
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