日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

合并JavaScript數組的N種方法

瀏覽:170日期:2023-11-22 15:01:42

這是一篇簡單的文章,關于JavaScript數組使用的一些技巧。我們將使用不同的方法結合/合并兩個JS數組,以及討論每個方法的優點/缺點。

讓我們先考慮下面這情況:

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 );a; // [1,2,3,4,5,6,7,8,9]b; // ["foo","bar","baz","bam","bun","fun"]c; // [1,2,3,4,5,6,7,8,9,"foo","bar","baz","bam","bun","fun"]

正如你所看到的,C是一個全新的數組,表示a和b兩個數組的組合,并讓A和B不變。簡單吧?

但如果a有10,000個元素,而b也有一萬個元素? C就會有2萬個元素,所以a和b的內內存使用就會翻倍。

“沒問題!”,你說。讓它們被垃圾回收,把A和B設置為null,問題解決了!

a = b = null; // 'a'和'b'就被回收了

呵呵。對于只有幾個元素的小數組,這沒啥問題。但對于大數組,或者在內存有限的系統中需要經常重復這個過程,它其實還有很多改進的地方。

循環插入

好吧,讓我們將一個數組的內容復制到另一個,使用: Array#push(..)

// `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;

現在,數組a有了數組b的內容。

似乎有更好的內存占用。

但如果a數組比較小?出于內存和速度的原因,你可能要把更小的a放到b的前面,。沒問題,只需將push(..)換成unshift(..)即可:

// `a` into `b`:for (var i=a.length-1; i >= 0; i--) { b.unshift( a[i] );}b; // [1,2,3,4,5,6,7,8,9,"foo","bar","baz","bam","bun","fun"]功能技巧

不過for循環確實比較丑,而且不好維護。我們可以做的更好嗎?

這是我們的第一次嘗試,使用Array#reduce:

// `b` onto `a`:a = b.reduce( function(coll,item){ coll.push( item ); return coll;}, a );a; // [1,2,3,4,5,6,7,8,9,"foo","bar","baz","bam","bun","fun"]// or `a` into `b`:b = a.reduceRight( function(coll,item){ coll.unshift( item ); return coll;}, b );b; // [1,2,3,4,5,6,7,8,9,"foo","bar","baz","bam","bun","fun"]

Array#reduce(..) 和 Array#reduceRight(..)是不錯的,但他們是一點點笨拙。 ES6=>的箭頭函數將減少一些代碼量,但它仍然需要一個函數,每個元素都需要調用一次,不是很完美。

那這個怎么樣:

// `b` onto `a`:

a.push.apply( a, b );

a; // [1,2,3,4,5,6,7,8,9,"foo","bar","baz","bam","bun","fun"]

// or `a` into `b`:

b.unshift.apply( b, a );

b; // [1,2,3,4,5,6,7,8,9,"foo","bar","baz","bam","bun","fun"]

這是一個要好很多吧?特別是因為 unshift(..)方法在這里并不需要擔心前面的反向排序。 ES6的spead操作會更漂亮: a.push( ...b ) 或 b.unshift( ...a

數組最大長度限制

第一個主要的問題是,內存使用量增長了一倍(當然只是暫時的!)被追加內容基本上是通過函數調用將元素復制到堆棧中。此外,不同的JS引擎都有拷貝數據長度的限制。

所以,如果數組有一百萬個元素,你肯定會超出了push(...)或unshift(...)允許調用堆棧的限制。唉,處理幾千個元素它會做得很好,但你必須要小心,不能超過合理的長度限值。

注意: 你可以嘗試一下splice(...),它跟push(...)和unshift(...)一樣都有這種問題。

有一種方法可以避免這種最大長度限制。

function combineInto(a,b) { var len = a.length; for (var i=0; i < len; i=i+5000) {b.unshift.apply( b, a.slice( i, i+5000 ) ); }}

等一下,我們的可讀性倒退了。 就這樣吧,可能會越改越差,呵。

原文地址: davidwalsh.name

標簽: JavaScript
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
伊人久久亚洲影院| 国产一区二区三区精品在线观看| 色婷婷色综合| 国产精品精品| 日韩在线观看| 久久国产直播| 黄色日韩在线| 亚洲三级国产| 国产精品综合| 国产精品高颜值在线观看| 另类专区亚洲| 亚洲国产一区二区在线观看| 日韩亚洲国产欧美| 久久国产精品毛片| 婷婷综合福利| 欧美精品成人| 91亚洲国产成人久久精品| 香蕉成人av| 中国女人久久久| 日本不卡视频一二三区| 国产精品一页| 正在播放日韩精品| 激情91久久| 日韩av资源网| 久久久久久婷| 亚洲一区二区免费看| 日韩高清成人在线| 91视频一区| 午夜久久99| 青青草伊人久久| 美女精品视频在线| 天堂av在线| 亚洲激情婷婷| 国产人成精品一区二区三| 色一区二区三区| 久色成人在线| 欧美极品中文字幕| 久久精品国产68国产精品亚洲| 影音先锋久久精品| 久久精品伊人| 好看的av在线不卡观看| 欧美一区影院| 成人精品中文字幕| 亚洲欧美久久精品| 成人在线免费观看网站| 婷婷亚洲五月| 欧美日韩亚洲一区二区三区在线| 欧美三区四区| 日韩免费精品| 天堂资源在线亚洲| 欧美日本不卡高清| 久久久久久美女精品| 日本亚洲不卡| 色偷偷色偷偷色偷偷在线视频| 中文字幕av一区二区三区人 | 日韩另类视频| 亚洲男人在线| 成人看片网站| 久久精品99久久久| 亚洲国产综合在线看不卡| 日韩中文一区二区| 九色porny丨国产首页在线| 日韩在线网址| 欧美午夜精彩| 欧美1区2区3| 久久成人亚洲| 日韩免费在线| 久久激情五月激情| 国产精品日本欧美一区二区三区| 久久这里只有精品一区二区| 视频一区中文字幕国产| 欧美日韩免费观看视频| 国产午夜久久av| 在线亚洲激情| 亚洲国产成人二区| 日本麻豆一区二区三区视频| 不卡在线一区| 精品高清久久| 91成人福利| 奶水喷射视频一区| 中文字幕一区久| 国产精品亚洲综合久久| 蜜桃久久av一区| 免费国产自久久久久三四区久久 | 日韩中文视频| 欧美极品中文字幕| 日本不卡的三区四区五区| 欧美aa国产视频| 中文在线中文资源| 美女毛片一区二区三区四区最新中文字幕亚洲 | 国产精久久久| 日韩精品视频中文字幕| 欧美日韩国产一区精品一区| 黄色在线网站噜噜噜| 国产精品欧美三级在线观看 | 免费视频一区二区三区在线观看| 免费成人在线观看| 亚洲小说欧美另类婷婷| 日本在线高清| 精品免费av| 欧美激情网址| 国产精品香蕉| 国产日韩欧美三区| 日本一区福利在线| 四虎国产精品免费久久| 欧美日韩国产欧| 99久久99久久精品国产片果冰| 97精品国产| 国产精品不卡| 国产精选在线| 日韩电影二区| 日韩欧美一区二区三区在线视频| 久久精品国产久精国产爱| 国产伦精品一区二区三区千人斩 | 日韩综合小视频| 深夜福利一区| 日韩精品a在线观看91| 亚州欧美在线| 日本亚洲视频| 欧美亚洲tv| 国产精品一区二区三区美女| 国产精品一区二区美女视频免费看 | 日韩精品视频中文字幕| 最新国产精品视频| 99视频精品| 免费欧美在线视频| 亚洲精品精选| 日本99精品| 国产精品手机在线播放| 麻豆成人在线观看| 亚洲综合电影| 国产精品99一区二区| 国产婷婷精品| 亚洲欧美网站在线观看| 欧美日韩伊人| 精品亚洲免a| 色在线视频观看| 国产一区亚洲| 另类国产ts人妖高潮视频| 午夜在线视频观看日韩17c| 蜜臀va亚洲va欧美va天堂| 一本综合精品| 久久国产三级| 红杏一区二区三区| 91精品国产乱码久久久久久久| 2023国产精品久久久精品双| 老司机精品久久| 91成人精品观看| 国产一区二区精品久| 免费av一区| 日韩亚洲精品在线观看| 久久av日韩| 99精品视频精品精品视频| 国产毛片久久| 欧美日韩视频免费看| 国产一区不卡| 日韩午夜高潮| 国产日韩1区| 日韩高清中文字幕一区二区| 夜久久久久久| 国产精品一区二区三区www| 久久毛片亚洲| 丝袜美腿亚洲一区二区图片| 久久精品99国产精品| 天堂中文av在线资源库| 久久午夜视频| 精品一区二区三区亚洲| 免费精品国产的网站免费观看| 日本亚洲不卡| 成人三级高清视频在线看| 欧美特黄一区| 国产精品免费99久久久| 欧美亚洲国产激情| 欧美日韩91| 色综合www| 日本一区二区三区视频在线看 | 久久精品一区二区国产| 婷婷亚洲五月| 国产精品羞羞答答在线观看| 亚洲v在线看| 欧美久久精品| 午夜影院欧美| 你懂的网址国产 欧美| 欧美色图一区| 国产精品久久久久77777丨| 99久久精品国产亚洲精品| 97精品资源在线观看| 91精品蜜臀一区二区三区在线| 91精品日本| 91九色精品| 成人午夜亚洲| 日本久久二区| 亚洲国产日韩欧美在线| 麻豆视频一区| 亚洲精品美女91| 日本少妇一区| 国产精品亚洲产品| 美女尤物久久精品| 天堂中文在线播放| 国产精品永久|