apply的一些其他巧妙用法
Math.max.apply( null, [12,23,34,45] );
//细心的人可能已经察觉到,在我调用apply方法的时候,
// 第一个参数是对象(this),
// 第二个参数是一个数组集合,
// 在调用Person的时候,他需要的不是一个数组,
// 但是为什么他给我一个数组我仍然可以将数组解析为一个一个的参数,
// 这个就是apply的一个巧妙的用处:可以将一个数组默认的转换为一个参数列表([param1,param2,param3] 转换为 param1,param2,param3) 这个如果让我们用程序来实现将数组的每一个项,来装换为参数的列表,
// 可能都得费一会功夫,借助apply的这点特性,所以就有了以下高效率的方法:
max函数用法
// Math.max后面可以接任意个参数,最后返回所有参数中的最大值。 console.log(Math.max(5,8)) //8 console.log(Math.max(5,7,9,3,1,6)) //9 //但是在很多情况下,我们需要找出数组中最大的元素。 var arr=[5,7,9,1] alert(Math.max(arr)) // 这样却是不行的。因为其不支持传递数组过去 那么怎么做呢,就要考察我们的算法功底了。。 function getMax(arr){ var arrLen=arr.length; for(var i=0,ret=arr[0];i<arrLen;i++){ ret=Math.max(ret,arr[i]); } return ret; }
获取数组中的最大值
var max=Math.max.apply(null,[1,888,88]) alert('最大值:'+max)
总结:
```
对于Math.max 参数里面不支持Math.max([param1,param2]) 也就是数组
但是它支持Math.max(param1,param2,param3…),所以可以根据刚才apply的那个特点来解决
var max=Math.max.apply(null,array),这样轻易的可以得到一个数组中最大的一项
(apply会将一个数组装换为一个参数接一个参数的传递给方法)
第一个参数为什么是null:
这块在调用的时候第一个参数给了一个null,这个是因为没有对象去调用这个方法,
我只需要用这个方法帮我运算,得到返回的结果就行,.所以直接传递了一个null过去
```