js巧用apply方法實現數組最值以及合並


盡管js的apply方法在平常的使用中並不多見,但是在某些地方使用的還是很有幫助性的,這里就和大家說兩個比較實用的例子:
1.數組最大最小值

求數組中的最大最小值,js有相應的方法:Math.min(),Math.max(),但是這兩個方法有個不方便的地方就是其參數不能是數組,而是單個元素值,即(para1,para2,para3....)。所以使用就沒有那么方便了,但是我們可以使用這個方法:

var min = Math.min.apply(null, arr); var max = Math.max.apply(null, arr);

2.數組合並。數組的合並也和求最值一樣,我們可以使用簡單的push(para1);進行循環push.但我們也可以使用比較簡單的方法:

Array.prototype.push.apply(arrA, arrB); //將數組arrB push到數組 arrA中。

這里要解釋下能這么用的原因。從另外一個關於apply的文章,我們可以了解到,function的apply方法的第二個參數是一個數組集合, 在調用的時候,他需要的不是一個數組,但是為什么他給我一個數組我仍然可以將數組解析為一個一個的參數,這個就是apply的一個巧妙的用處,可以將一個數組默認的轉換為一個參數列表([param1,param2,param3] 轉換為 param1,param2,param3) ,所以利用變個特性,我們就實現了上面的功能。
下面是我的完整代碼,方便大家學習了解。

$('#getMinMax').click(function () { var arr = [1, 2, 3, 4, 5, 6, 7, 0.9, 11]; var min = Math.min.apply(null, arr); var max = Math.max.apply(null, arr); alert('min:' min '  max:' max); }); $('#unite').click(function () { var arrA = ['1', '2', '3']; var arrB = [4, 5, 6]; Array.prototype.push.apply(arrA, arrB); var str = 'newArr:['; for (var i = 0; i < arrA.length; i ) { str = arrA[i]   ','; } str = str.substr(0, str.length - 1) ']'; alert(str); });

首先你要知道apply是干啥的,apply會改變方法的this指向為第一個參數,第二個參數是個數組

apply會將第二個類數組參數拆分成一個個單獨項。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM