麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > JavaScript > 正文

javascript稀疏數組(sparse array)和密集數組用法分析

2019-11-19 18:13:22
字體:
來源:轉載
供稿:網友

本文實例講述了javascript稀疏數組(sparse array)和密集數組用法。分享給大家供大家參考,具體如下:

學習underscore.js數組相關API的時候,遇到了sparse array這個東西,以前沒有接觸過。

這里學習下什么是稀疏數組和密集數組。

什么是密集數組呢?在Java和C語言中,數組是一片連續的存儲空間,有著固定的長度。加入數組其實位置是address,長度為n,那么占用的存儲空間是address[0],address[1],address[2].......address[n-1]。即數組元素之間是緊密相連的,不存在空隙。如下的js代碼創建的就是一個密集數組

var data = [3,1,6,9,2];

什么是稀疏數組呢?與密集數組相反,javascript并不強制要求數組元素是緊密相連的,即允許間隙的存在。如下的js代碼是合法的:

var sparse = new Array();sparse[0] = 0;sparse[3] = 3;alert(sparse[0]);//輸出0alert(sparse[1]);//輸出undefined

1、創建稀疏數組

如下代碼創建了一個固定長度的稀疏數組

var a = new Array(3);a[2] = 1;alert(a[0]);//undefinedalert(a[2]);//1

說白了js中建立稀疏數組很容易,只要你故意讓數組元素之間存在間隙即可。如

var arr = [];arr[0] = 0;arr[200] = 200;

2、創建密集數組

可以看到js中的數組一般都是稀疏的,一般來說稀疏數組的遍歷比較麻煩。

var dense = Array.apply(null, Array(3));

這行代碼等同于var  dense = Array(undefined, undefined, undefined) ;呵呵是不是覺得很奇怪,這種方式跟稀疏數組沒有什么差別??创a:

//稀疏數組var array = new Array(3);array[2] = "name";for(var a in array){  console.log("index=" + a + ",value=" + array[a]);}// 密集數組var dense = Array.apply(null, Array(3));dense[2] = "name";for(var a in dense){  console.log("index=" + a + ",value=" + dense[a]);}

用F12觀察控制臺輸出結果是:

可以看到確實是有差別的:稀疏數組只遍歷了一次(因為只有一個元素),密集數組遍歷了3次。

3、總結

JavaScript中的數組并不像我們在C或java等語言中遇到的常規數組,在js中數組并不是起始地址+長度構成的一片連續的地址空間。

javascript中數組其實就是個對象,只不過會自動管理一些"數字"屬性和length屬性罷了。

說的更直接一點,JavaScript中的數組根本沒有索引,因為索引應該是數字,而JavaScript中數組的索引其實是字符串。

arr[1]其實就是arr["1"],給arr["1000"] = 1,arr.length也會自動變為1001。

這些表現的根本原因就是:JavaScript中的對象就是字符串到任意值的鍵值對。

雖然稀疏數組和密集數組差別不大,javascript也沒有語法強制數組是稀疏的還是密集的,這不過是概念上的區分。

最佳實踐是:就把js數組當成是java或C中的數組,由我們程序員來負責讓js的數組元素是連續的。

var array = [1,2,3,4];

如:

var array = new Array();array[0]=0;array[1]=1;

這樣創建的js數組,就符合我們熟悉的數組了。

更多關于JavaScript相關內容感興趣的讀者可查看本站專題:《JavaScript數組操作技巧總結》、《JavaScript排序算法總結》、《JavaScript遍歷算法與技巧總結》、《JavaScript數學運算用法總結》、《JavaScript數據結構與算法技巧總結》、《JavaScript查找算法技巧總結》及《JavaScript錯誤與調試技巧總結

希望本文所述對大家JavaScript程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 草草视频免费观看 | 性爱视频免费 | 31freehdxxxx欧美| 九九视频在线观看黄 | 久久欧美亚洲另类专区91大神 | 欧美一级成人一区二区三区 | 久草资源在线观看 | 亚洲成人精品视频 | 噜噜噜躁狠狠躁狠狠精品视频 | 国产高潮好爽受不了了夜色 | 中文日韩 | fc2国产成人免费视频 | 爱操视频| 午夜久久久久 | 欧美日韩一 | 免费看成年人视频在线 | 日韩在线毛片 | 欧美 国产 亚洲 卡通 综合 | 福利在线免费 | 美女黄污视频 | 欧美精品免费一区二区三区 | japanese hot milf free av | 国产精品久久久久久一区二区三区 | 国产1区2| 欧美性受xxxx人人本视频 | 欧美四级在线观看 | 一本色道久久综合亚洲精品图片 | 国产精品久久久久久久久久久久久久久 | 国产成人在线综合 | 成人毛片在线免费看 | 日韩精品免费看 | 中文字幕在线网站 | 欧美精选一区二区 | 毛片韩国| 亚洲人成网站免费播放 | 99热1| 一级色毛片 | 免费一级高清毛片 | 欧美一级视频网站 | 91精品国产福利尤物免费 | 欧美性生活区 |