1. 程式人生 > >不用concat解決Javascript連線多個數組

不用concat解決Javascript連線多個數組

第一種方法就是大家熟知的concat,但是這個方法有一個確定就是該方法不會改變現有的陣列,而僅僅會返回被連線陣列的一個副本。

如果只是想把一個新陣列的元素加到現有陣列中,我們還要為其重新賦值,其實存在有一點點資源的浪費。簡單的說,我們要為新建立的陣列分配新的記憶體空間,並且把arr1重新指向這個新記憶體地址,那麼原來那個記憶體中的陣列呢,嘿嘿 那就要看瀏覽器能不能正確回收嘍。

如下例:

var arr1 = [1,2,3];

var arr1 = arr1.concat([4,5]);

那麼我們有沒有什麼好辦法來避免這個資源消耗呢?

這裡可以使用Javascript原生的apply方法來實現,首先看如下程式碼:

var arr1= [1,2,3];
arr1.push.apply(arr1,[4,5]);

這樣就搞定了,此方法巧妙的運用了apply方法的特性(第二個引數是陣列型別的多個)解放了push方法, push方法從本身只能傳遞多個值變成了可以傳遞陣列, 上述程式碼其實就等價於
arr1.push(4,5);

這樣arr1還是那個arr1,只是記憶體進行了重寫而已,沒有重定向和不必要的記憶體溢位。