javascript稀疏數(shù)組(sparse array)

<h1>
1.什么是稀疏數(shù)組
</h1>
在java衰琐,c++中數(shù)組是一段連續(xù)的存儲(chǔ)空間吗垮,元素與元素之間沒(méi)有空隙葫盼,但在js中允許存在有空隙的數(shù)組蛋勺,這就是稀疏數(shù)組(sparse array)瓦灶。稀疏數(shù)組就是包含從0開(kāi)始的不連續(xù)索引的數(shù)組。
<h1>
2.稀疏數(shù)組實(shí)例
</h1>
先看個(gè)例子

var arr = new Array(3);
arr[100]=1;
console.log(arr.length);
arr.forEach(function(x,i){
console.log(x);});

輸出為

101
1

這樣就創(chuàng)建了一個(gè)稀疏數(shù)組,遍歷它是js會(huì)跳過(guò)這些空隙抱完,但是當(dāng)我們輸出數(shù)組中空隙位置的值時(shí)

var arr = new Array(3);
arr[100]=1;
console.log(arr.length);
console.log(arr[0]);
arr.forEach(function(x,i){
console.log(x);});

輸出為

101
undefined
1

這里的undefined指不存在和在數(shù)組直接量中省略值是產(chǎn)生的undefined是不一樣的贼陶,后者是值為undefined
兩者的區(qū)別可以通過(guò)in操作符檢測(cè)

var a1=[,,]
var a2=new Array(3);
0 in a1;
0 in a2;

第一個(gè)判斷為true,因?yàn)閍1 為[undefined,undefined,undefined]
第二個(gè)判斷為false,因?yàn)?a2 在索引0初不存在元素

*需要注意的是在省略數(shù)組直接量時(shí)使用連續(xù)的逗號(hào)碉怔,如[1,,3]時(shí)得到的是稀疏數(shù)組
<h1>
3.壓縮稀疏數(shù)組
</h1>
js中的數(shù)組一般都是稀疏數(shù)組烘贴,通常來(lái)說(shuō)稀疏數(shù)組的遍歷較為困難,我們可以通過(guò)filter()方法壓縮其中的空隙撮胧,因?yàn)閒ilter會(huì)跳過(guò)空隙桨踪,返回密集的數(shù)組

sparse.filter(function(x){
return true;
});

*同樣可以使用filter()方法去除數(shù)組中的null和undefined

arr.filter(function(x){
return x!= undefined && x!= null;
});

<h1>
4.創(chuàng)建密集數(shù)組
</h1>
壓縮稀疏數(shù)組不如直接創(chuàng)建一個(gè)密集數(shù)組

var sparse = new Array(3);
var dense = Array.apply(null, Array(3));
sparse.forEach(function(x,i){
console.log('sparse :'+i+x);});
dense.forEach(function(x,i){
console.log('dense :'+i+x);});

數(shù)組dense為密集數(shù)組,這段代碼輸出為

dense: 0 undefined
dense: 1 undefined
dense: 2 undefined

<h1>
5.想法
</h1>
作為java起手的程序員芹啥,習(xí)慣了連續(xù)的數(shù)組锻离,也習(xí)慣將js中的數(shù)組轉(zhuǎn)化為密集數(shù)組使用,避免一些麻煩墓怀。但實(shí)際上js中沒(méi)有類似java中的數(shù)組汽纠,因?yàn)閖s中的數(shù)組根本就沒(méi)有索引,js中的“索引”其實(shí)不是數(shù)字是字符串傀履,因?yàn)閖s的對(duì)象就是字符串到任意值的鍵值對(duì)虱朵,數(shù)組作為一種對(duì)象數(shù)據(jù)類型自然不例外。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末钓账,一起剝皮案震驚了整個(gè)濱河市碴犬,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌梆暮,老刑警劉巖翅敌,帶你破解...
    沈念sama閱讀 211,290評(píng)論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異惕蹄,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)治专,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,107評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門卖陵,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人张峰,你說(shuō)我怎么就攤上這事泪蔫。” “怎么了喘批?”我有些...
    開(kāi)封第一講書人閱讀 156,872評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵撩荣,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我饶深,道長(zhǎng)餐曹,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書人閱讀 56,415評(píng)論 1 283
  • 正文 為了忘掉前任敌厘,我火速辦了婚禮台猴,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己饱狂,他們只是感情好曹步,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,453評(píng)論 6 385
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著休讳,像睡著了一般讲婚。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上俊柔,一...
    開(kāi)封第一講書人閱讀 49,784評(píng)論 1 290
  • 那天筹麸,我揣著相機(jī)與錄音,去河邊找鬼婆咸。 笑死竹捉,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的尚骄。 我是一名探鬼主播块差,決...
    沈念sama閱讀 38,927評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼倔丈!你這毒婦竟也來(lái)了憨闰?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書人閱讀 37,691評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤需五,失蹤者是張志新(化名)和其女友劉穎鹉动,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體宏邮,經(jīng)...
    沈念sama閱讀 44,137評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡泽示,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,472評(píng)論 2 326
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了蜜氨。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片械筛。...
    茶點(diǎn)故事閱讀 38,622評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖飒炎,靈堂內(nèi)的尸體忽然破棺而出埋哟,到底是詐尸還是另有隱情,我是刑警寧澤郎汪,帶...
    沈念sama閱讀 34,289評(píng)論 4 329
  • 正文 年R本政府宣布赤赊,位于F島的核電站,受9級(jí)特大地震影響煞赢,放射性物質(zhì)發(fā)生泄漏抛计。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,887評(píng)論 3 312
  • 文/蒙蒙 一照筑、第九天 我趴在偏房一處隱蔽的房頂上張望爷辱。 院中可真熱鬧录豺,春花似錦、人聲如沸饭弓。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 30,741評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)弟断。三九已至咏花,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間阀趴,已是汗流浹背昏翰。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 31,977評(píng)論 1 265
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留刘急,地道東北人棚菊。 一個(gè)月前我還...
    沈念sama閱讀 46,316評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像叔汁,于是被迫代替她去往敵國(guó)和親统求。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,490評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容

  • 第七章:數(shù)組 2017.02.27 數(shù)組 數(shù)組是值的有序集合据块。每個(gè)值叫做一個(gè)元素码邻,而每個(gè)元素在數(shù)組中有一個(gè)位置,以...
    靜候那一米陽(yáng)光閱讀 429評(píng)論 0 1
  • 第三章 類型另假、值和變量 1像屋、存取字符串、數(shù)字或布爾值的屬性時(shí)創(chuàng)建的臨時(shí)對(duì)象稱做包裝對(duì)象边篮,它只是偶爾用來(lái)區(qū)分字符串值...
    坤少卡卡閱讀 628評(píng)論 0 1
  • 數(shù)組的基本特點(diǎn) 數(shù)組元素是任意類型的 可能的最大索引是2^32-2己莺,默認(rèn)起始索引是 0 Javascript的數(shù)組...
    dooze閱讀 478評(píng)論 0 1
  • 膽量,對(duì)于我來(lái)說(shuō)是一件多么困難的事情戈轿。只敢去想象凌受,不敢去實(shí)現(xiàn),更不敢大聲的表達(dá)出來(lái) 凶杖。所有的膽量我都把它...
    百合花任澤欣閱讀 572評(píng)論 0 0
  • 我每天熬夜做的各種事情忽然讓我覺(jué)得未來(lái)也不是一片黑暗,恍然大悟哦我的日子可以這樣過(guò)可以那樣過(guò)這種感覺(jué)真是好極了
    麻辣小龍俠x閱讀 147評(píng)論 0 0