1. 程式人生 > >js題集27--數組拼接寫法

js題集27--數組拼接寫法

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--數組拼接寫法