考慮我們有2個大小爲N和M非常大的陣列,的Javascript推到數組 - 性能
var array1 = [1,2,3...N],
array2 = [a,b,c...M];
什麼是推到數組2的陣列1的最優化的方式?
使用原生的JavaScript,
Array.prototype.push.apply(array1,array2)
使用Lodash,
array1 = _.concat(array1, array2)
由於lodash使得源陣列的複製,我想這是複雜將由O(N)作爲比較本地JavaScript增加。 有沒有其他優化的方式來推動數組? 另外,爲什麼像lodash這樣一個非常流行的庫不能提供修改現有數組以提高性能的選項?
至於lodash的功能,我懷疑'_.concat'不修改現有的陣列,因爲.concat'沒有任何本地'。 –
(偏離主題),但爲什麼你甚至會考慮對數組實例上的'Array.prototype.push.apply(array1,array2)'進行操作?,只有在需要「借用」時才使用調用或綁定或應用函數「一個來自Array.prototype對象的函數來調用**類似**的對象,比如'arguments'。只需做'array1.concat(array2)' – Dummy
@Dummy concat創建源數組的副本,push不會創建任何副本並修改現有數組,因此push的性能應該更好。 – Ankush