Javascript連接多個(gè)數(shù)組不用concat來解決
更新時(shí)間:2014年03月24日 16:44:21 作者:
這篇文章主要介紹了不用concat解決Javascript連接多個(gè)數(shù)組,需要的朋友可以參考下
第一種方法就是大家熟知的concat,但是這個(gè)方法有一個(gè)確定就是該方法不會(huì)改變現(xiàn)有的數(shù)組,而僅僅會(huì)返回被連接數(shù)組的一個(gè)副本。
如果只是想把一個(gè)新數(shù)組的元素加到現(xiàn)有數(shù)組中,我們還要為其重新賦值,其實(shí)存在有一點(diǎn)點(diǎn)資源的浪費(fèi)。簡(jiǎn)單的說,我們要為新創(chuàng)建的數(shù)組分配新的內(nèi)存空間,并且把a(bǔ)rr1重新指向這個(gè)新內(nèi)存地址,那么原來那個(gè)內(nèi)存中的數(shù)組呢,嘿嘿 那就要看瀏覽器能不能正確回收嘍。
如下例:
var arr1 = [1,2,3];
var arr1 = arr1.concat([4,5]);
那么我們有沒有什么好辦法來避免這個(gè)資源消耗呢?
這里可以使用Javascript原生的apply方法來實(shí)現(xiàn),首先看如下代碼:
var arr1= [1,2,3];
arr1.push.apply(arr1,[4,5]);
這樣就搞定了,此方法巧妙的運(yùn)用了apply方法的特性(第二個(gè)參數(shù)是數(shù)組類型的多個(gè))解放了push方法, push方法從本身只能傳遞多個(gè)值變成了可以傳遞數(shù)組, 上述代碼其實(shí)就等價(jià)于
arr1.push(4,5);
這樣arr1還是那個(gè)arr1,只是內(nèi)存進(jìn)行了重寫而已,沒有重定向和不必要的內(nèi)存溢出。
如果只是想把一個(gè)新數(shù)組的元素加到現(xiàn)有數(shù)組中,我們還要為其重新賦值,其實(shí)存在有一點(diǎn)點(diǎn)資源的浪費(fèi)。簡(jiǎn)單的說,我們要為新創(chuàng)建的數(shù)組分配新的內(nèi)存空間,并且把a(bǔ)rr1重新指向這個(gè)新內(nèi)存地址,那么原來那個(gè)內(nèi)存中的數(shù)組呢,嘿嘿 那就要看瀏覽器能不能正確回收嘍。
如下例:
復(fù)制代碼 代碼如下:
var arr1 = [1,2,3];
var arr1 = arr1.concat([4,5]);
那么我們有沒有什么好辦法來避免這個(gè)資源消耗呢?
這里可以使用Javascript原生的apply方法來實(shí)現(xiàn),首先看如下代碼:
復(fù)制代碼 代碼如下:
var arr1= [1,2,3];
arr1.push.apply(arr1,[4,5]);
這樣就搞定了,此方法巧妙的運(yùn)用了apply方法的特性(第二個(gè)參數(shù)是數(shù)組類型的多個(gè))解放了push方法, push方法從本身只能傳遞多個(gè)值變成了可以傳遞數(shù)組, 上述代碼其實(shí)就等價(jià)于
復(fù)制代碼 代碼如下:
arr1.push(4,5);
這樣arr1還是那個(gè)arr1,只是內(nèi)存進(jìn)行了重寫而已,沒有重定向和不必要的內(nèi)存溢出。
您可能感興趣的文章:
- JS數(shù)組合并push與concat區(qū)別分析
- js嵌套的數(shù)組扁平化:將多維數(shù)組變成一維數(shù)組以及push()與concat()區(qū)別的講解
- JavaScript使用concat連接數(shù)組的方法
- JavaScript字符串對(duì)象的concat方法實(shí)例(用于連接兩個(gè)或多個(gè)字符串)
- JS數(shù)組方法concat()用法實(shí)例分析
- JavaScript中使用concat()方法拼接字符串的教程
- 深入理解javascript中concat方法
- javascript使用 concat 方法對(duì)數(shù)組進(jìn)行合并的方法
- js采用concat和sort將N個(gè)數(shù)組拼接起來的方法
- javascript中數(shù)組的concat()方法使用介紹
- javascript concat數(shù)組累加 示例
- JS Array創(chuàng)建及concat()split()slice()的使用方法
- 淺談JavaScript的push(),pop(),concat()方法
- JavaScript模擬數(shù)組合并concat
- JS數(shù)組降維的實(shí)現(xiàn)Array.prototype.concat.apply([], arr)
- JavaScript中concat復(fù)制數(shù)組方法淺析
- javascript數(shù)組中的concat方法和splice方法
- JavaScript的concat方法實(shí)例代碼(數(shù)組連接)
相關(guān)文章
Immutable 在 JavaScript 中的應(yīng)用
在 JavaScript 中,對(duì)象是引用類型的數(shù)據(jù),其優(yōu)點(diǎn)在于頻繁的修改對(duì)象時(shí)都是在原對(duì)象的基礎(chǔ)上修改,并不需要重新創(chuàng)建,這樣可以有效的利用內(nèi)存,不會(huì)造成內(nèi)存空間的浪費(fèi),對(duì)象的這種特性可以稱之為 Mutable,中文的字面意思是「可變」2016-05-05
JavaScript 中 avalon綁定屬性總結(jié)
avalon是前端MVVM框架,在js中經(jīng)常會(huì)用到。這篇文章主要介紹了JavaScript 中 avalon綁定屬性總結(jié)的相關(guān)資料,需要的朋友可以參考下2016-10-10
JavaScript設(shè)計(jì)模式之單件模式介紹
這篇文章主要介紹了JavaScript設(shè)計(jì)模式之單件模式介紹,單件模式,就是靜態(tài)化的訪問中已經(jīng)實(shí)例化的對(duì)象,這個(gè)對(duì)象只能通過一個(gè)唯一的入口訪問,已經(jīng)實(shí)例或待實(shí)例化的對(duì)象,需要的朋友可以參考下2014-12-12
Javascript 圓角div的實(shí)現(xiàn)代碼
為什么要做圓角的div: 圓角div平滑美觀,某些情況下有比較不錯(cuò)的效果。比如說要做一個(gè)報(bào)message的消息框,那么動(dòng)態(tài)的生成一個(gè)圓角div則很有意義。而對(duì)html樣式控制的css本身是不直接支持圓角div的。2009-10-10
JS實(shí)現(xiàn)根據(jù)文件字節(jié)數(shù)返回文件大小的方法
這篇文章主要介紹了JS實(shí)現(xiàn)根據(jù)文件字節(jié)數(shù)返回文件大小的方法,涉及javascript數(shù)值計(jì)算與字符串操作相關(guān)技巧,需要的朋友可以參考下2016-08-08
純JS實(shí)現(xiàn)可用于頁(yè)碼更換的飛頁(yè)特效示例
這篇文章主要介紹了純JS實(shí)現(xiàn)可用于頁(yè)碼更換的飛頁(yè)特效,涉及javascript結(jié)合時(shí)間函數(shù)的數(shù)學(xué)運(yùn)算與頁(yè)面元素屬性動(dòng)態(tài)修改相關(guān)操作技巧,需要的朋友可以參考下2018-05-05

