亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

 更新時間:2016年12月28日 10:21:53   作者:aitangyong  
這篇文章主要介紹了javascript稀疏數(shù)組(sparse array)和密集數(shù)組用法,分析javascript稀疏數(shù)組和密集數(shù)組的功能、定義與使用方法,需要的朋友可以參考下

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

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

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

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

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

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

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

1、創(chuàng)建稀疏數(shù)組

如下代碼創(chuàng)建了一個固定長度的稀疏數(shù)組

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

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

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

2、創(chuàng)建密集數(shù)組

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

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

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

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

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

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

3、總結

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

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

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

arr[1]其實就是arr["1"],給arr["1000"] = 1,arr.length也會自動變?yōu)?001。

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

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

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

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

如:

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

這樣創(chuàng)建的js數(shù)組,就符合我們熟悉的數(shù)組了。

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

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

相關文章

  • JavaScript判斷是否為數(shù)字的4種方法及效率比較

    JavaScript判斷是否為數(shù)字的4種方法及效率比較

    這篇文章主要介紹了JavaScript判斷是否為數(shù)字的4種方法及效率比較,本文直接給出判斷方法實現(xiàn)代碼及運行效率效果圖,方便大家選擇使用,需要的朋友可以參考下
    2015-04-04
  • JavaScript中的高級函數(shù)

    JavaScript中的高級函數(shù)

    在JavaScript中,函數(shù)的功能十分強大,除了函數(shù)相關的基礎知識外,掌握一些高級函數(shù)并應用起來,不僅能讓JS代碼看起來更為精簡,還可以提升性能,本文是小編總結的一些常用的、重要的函數(shù)
    2018-01-01
  • layui下拉框獲取下拉值(select)的例子

    layui下拉框獲取下拉值(select)的例子

    今天小編就為大家分享一篇layui下拉框獲取下拉值(select)的例子,具有好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-09-09
  • 簡單了解three.js 著色器材質(zhì)

    簡單了解three.js 著色器材質(zhì)

    這篇文章主要介紹了three.js 著色器材質(zhì)的相關資料,文中講解非常詳細,代碼幫助大家更好的理解和學習,感興趣的朋友可以了解下
    2020-08-08
  • 用js實現(xiàn)小球的自由移動代碼

    用js實現(xiàn)小球的自由移動代碼

    本篇文章小編為大家介紹,用js實現(xiàn)小球的自由移動代碼。需要的朋友參考下
    2013-04-04
  • Javascript獲取統(tǒng)一管理的提示語(message)

    Javascript獲取統(tǒng)一管理的提示語(message)

    這篇文章主要介紹了Javascript獲取統(tǒng)一管理的提示語(message)的相關資料,需要的朋友可以參考下
    2016-02-02
  • 關于Function中的bind()示例詳解

    關于Function中的bind()示例詳解

    其實所謂bind顧名思義就是綁定。bind()方法會創(chuàng)建一個新函數(shù),當這個新函數(shù)被調(diào)用時,它的this值是傳遞給bind()的第一個參數(shù),它的參數(shù)是bind()的其他參數(shù)和其原本的參數(shù)。這么說可能很多人都糊涂了,下面通過這篇文章的示例來給大家詳細的介紹下吧。
    2016-12-12
  • 詳解Python中l(wèi)ogging日志模塊在多進程環(huán)境下的使用

    詳解Python中l(wèi)ogging日志模塊在多進程環(huán)境下的使用

    許多應用程序中都會有日志模塊,用于記錄系統(tǒng)在運行過程中的一些關鍵信息,以便于對系統(tǒng)的運行狀況進行跟蹤。這篇文章給大家主要介紹了在Python中l(wèi)ogging日志模塊在多進程環(huán)境下的使用,需要的朋友可以參考借鑒,下面來一起看看吧。
    2016-12-12
  • three.js實現(xiàn)3D模型展示的示例代碼

    three.js實現(xiàn)3D模型展示的示例代碼

    本篇文章主要介紹了three.js實現(xiàn)3D模型展示的示例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-12-12
  • JavaScript實現(xiàn)查找字符串中第一個不重復的字符

    JavaScript實現(xiàn)查找字符串中第一個不重復的字符

    這篇文章主要介紹了JavaScript實現(xiàn)查找字符串中第一個不重復的字符,需要的朋友可以參考下
    2014-12-12

最新評論