數組最大最小值與一個數組push到另一個數組

Math.max 能夠實現獲得數組中最大的一項,支持Math.max(param1,param2,param3…),不支持Math.max([param1,param2]) 也就是數組, 可是能夠根據apply的能夠將數組解析爲參數列表來解決數組

var max=Math.max.apply(null,array),這樣輕易的能夠獲得一個數組中最大的一項app

這塊在調用的時候第一個參數給了一個null,這個是由於沒有對象去調用這個方法,我只須要用這個方法幫我運算,獲得返回的結果就行,.因此直接傳遞了一個null過去this

var max=Math.max.apply(null,array) 其實等價於Math.max(array),只是利用了apply 第二個參數是數組的特性prototype

var a=[1,2,13,5]; var b=Math.max.apply(null, a); alert(b);//13,對象

上面的{}能夠換成this 或 null或者{}it

多維數組io

var a=[1,2,3,[5,6],[1,4,8]]; var ta=a.join(",").split(","); //轉化爲一維數組function

alert(Math.max.apply(null,ta)); //最大值循環

alert(Math.min.apply(null,ta));//最小值方法

鏈式

Array.prototype.max = function() { return Math.max.apply({},this) }

Array.prototype.min = function() { return Math.min.apply({},this) }

[1, 2, 3].max()// => 3

[1, 2, 3].min()// => 1

也能夠 Array.prototype.max = function() { return Math.max.apply({},a) }

var a =[1,2,3]

a.max()

上面的Array.prototype.max 與Array.prototype.min 能夠隨便取名字

再好比數組的push方法。

var arr1=[1,3,4];

var arr2=[3,4,5];

若是咱們要把 arr2展開,而後一個一個追加到arr1中去,最後讓arr1=[1,3,4,3,4,5] arr1.push(arr2)顯然是不行的。

由於這樣作會獲得[1,3,4,[3,4,5]]

咱們只能用一個循環去一個一個的push(固然也能夠用arr1.concat(arr2),可是concat方法並不改變arr1自己) 

var arrLen=arr2.length
for(var i=0;i<arrLen;i++){
    arr1.push(arr2[i]);
}

自從有了Apply,事情就變得如此簡單
Array.prototype.push.apply(arr1,arr2)也能夠

arr1.push.apply(arr1,arr2) alert(arr1)//[1,3,4,3,4,5]

相關文章
相關標籤/搜索