js題集27--數組拼接寫法
阿新 • • 發佈:2017-08-08
b數 es6 情況 ply tps 參考 -- col 大數組
1.能FQ的人類 可以參考如下鏈接(遍歷過十幾個相關的文章 覺得這個算不錯的)
https://davidwalsh.name/combining-js-arrays
2.不能FQ的可以參考 簡略翻譯。。
對於數組
var a = [ 1, 2, 3, 4, 5, 6, 7, 8, 9 ];
var b = [ "foo", "bar", "baz", "bam", "bun", "fun" ];
最終結果:
[
1, 2, 3, 4, 5, 6, 7, 8, 9,
"foo", "bar", "baz", "bam" "bun", "fun"
]
大多數第一反應是 concat
即是:var c = a.concat( b );
註意 c 是新數組 此時內存使用 有c,a,b三個數組。
小數組情況處理沒有問題。那麽大數組呢?
那麽第二種寫法:
// `b` onto `a`
for (var i=0; i < b.length; i++) {
a.push( b[i] );
}
a; // [1,2,3,4,5,6,7,8,9,"foo","bar","baz","bam","bun","fun"]
b = null;//垃圾回收
很顯然沒有新數組的創建,對於內存來說 更優。
註意到結尾的b=null; 拼接完成後將b數組清空。
不喜歡for循環的 可以參考另一種寫法:(更易於維護)
// `b` onto `a`:
a = b.reduce( function(coll,item){
coll.push( item );
return coll;
}, a );
更進一步簡化:
a.push.apply( a, b );
es6寫法:
a.push( ...b )
js題集27--數組拼接寫法