我想將兩個數組連接成一個。我發現兩個職能可以完成這項工作;一個是jQuery.merge()
,另一個是內置函數concat()
的JavaScript。他們似乎做同樣的事情,我發現this。它說:「合併創建了一個更小的空間,因爲它循環遍歷原始數組並添加了新項目.Concat是一個內置的Javascript函數,速度應該更快,但佔用的空間更大。」我不確定這種說法是否屬實,還有其他分歧嗎?jQuery.merge()和JavaScript本地函數concat()有什麼區別?
回答
該引用是正確的,兩個函數實際上並沒有做同樣的事情,一個將兩個數組合併成一個(第一個參數),第二個從兩個數組構建一個新的數組。
它所指的「腳印」是任何時候將使用的最大內存量。因爲合併,只會複製第二個數組,所以它應該使用較少的內存,因爲在任何時候,它只需要在內存中有兩個數組。
內置函數需要有3個數組,而新數組必須是兩個正在連接的數組的大小。
假設在陣列A和B 1000層的元件,並且合併後的數組作爲C:
- 合併將需要1000 + 1000 [A-> C],和1000並[b]或3000斑點。
- Concat將需要1000 + 1000 [c]和1000 [a]和1000 [b]或4000點。
如果有很多內存在使用中,內存減少可能會更快,移動速度也會更快。
http://jsperf.com/arrays-jquery-merge-vs-concat –
在tmaster的情況下,他用jQuery.merge()合併2 arrays.Actually,JQuery.merge可用於合併jQuery對象(jQuery對象具有長度支撐太)與Array.Here是jQuery的.merge()的代碼:
merge: function(first, second) {
var len = +second.length,
j = 0,
i = first.length;
for (; j < len; j++) {
first[ i++ ] = second[ j ];
}
first.length = i;
return first;
},
所以對於JQuery的對象具有length屬性,它可以使用合併到第二jQuery對象ATTR複製像0,1到第一jQuery對象。這裏是一個例子:
pushStack: function(elems) {
// Build a new jQuery matched element set
var ret = jQuery.merge(this.constructor(), elems);
...
return ret;
},
this.constructor()返回一個jQuery對象,也是elems。但是concat不能,只能和Array一起使用。這是concat和JQuery.merge之間的差異。
我想你可以連接類似數組的元素... – deostroll
- 1. Javascript和ECMA腳本有什麼區別?
- 2. JavaScript和=== ===有什麼區別?
- 3. JavaScript:函數名稱和函數引用有什麼區別?
- 4. 在javascript中var函數和函數有什麼區別?
- 5. submit()函數和send()JavaScript函數之間有什麼區別?
- 6. Javascript本地`instanceof`運算符和MooTools``instanceOf`函數有什麼區別?
- 7. 函數getAddUrl和getAddToCartUrl有什麼區別?
- 8. Crypt ...和CP ...函數有什麼區別?
- 9. round()和trunc()函數有什麼區別?
- 10. setInformativeText和setText函數有什麼區別?
- 11. $ get和$ find函數有什麼區別?
- 12. NtFsControlFile()和DeviceIoControl()函數有什麼區別?
- 13. OpenCL中本地和全局內存區別有什麼區別?
- 14. #concat和+ =在數組之間有什麼區別?
- 15. 是什麼本地函數myFunction的和當地myFunction的=()函數的區別
- 16. Javascript和Adobe Javascript有什麼區別?
- 17. 數組地址和數組本身有什麼區別嗎?
- 18. Javascript中的var name = function(){}和函數名(){}有什麼區別嗎?
- 19. 在HTML5畫布中,translate()和moveTo()javascript函數有什麼區別?
- 20. void,eval和JavaScript中的Function構造函數有什麼區別?
- 21. 擴展javascript功能時,Number和Math函數有什麼區別?
- 22. GAS中的腳本和自定義函數有什麼區別?
- 23. MATLAB中的腳本和函數有什麼區別?
- 24. 別名隊列和本地隊列有什麼區別?
- 25. +和CONCAT的區別?
- 26. JavaScript shell - 有什麼區別
- 27. 收藏和地圖有什麼區別?
- 28. AJAX與JavaScript和jQuery有什麼區別?
- 29. JSP,PHP,HTML5和JavaScript有什麼區別?
- 30. Javascript中「s」和「e」有什麼區別
一個區別是$ .merge()函數具有破壞性。它改變了第一個參數來添加第二個參數。 concat()不。它使一個新的陣列。 – j08691