,,javascript稀疏数组(sparse array)和密集数组用法分析

,,javascript稀疏数组(sparse array)和密集数组用法分析

本文主要介绍了javascript稀疏数组和密集数组的用法,并分析了javascript稀疏数组和密集数组的功能、定义和用法。有需要的可以参考一下。

本文演示了javascript中稀疏数组和密集数组的使用。分享给你,供你参考,如下:

在学习与下划线. js数组相关的API时,我碰到了稀疏数组,这是我以前从未接触过的。

这里了解一下什么是稀疏阵列,什么是密集阵列。

什么是密集阵?在Java和C语言中,数组是一个固定长度的连续存储空间。数组的实际位置是address,长度是n,所以占用的存储空间是address [0],address [1],address [2].地址[n-1]。即数组的元素紧密相连,没有空隙。下面的js代码创建了一个密集数组

var数据=[3,1,6,9,2];

什么是稀疏数组?与密集数组相反,javascript并不强制数组元素紧密相连,也就是允许有间隙。以下js代码是合法的:

var稀疏=new Array();

稀疏[0]=0;

稀疏[3]=3;

alert(稀疏[0]);//输出0

alert(稀疏[1]);//输出未定义

1、创建稀疏数组

下面的代码创建一个固定长度的稀疏数组

var a=新数组(3);

a[2]=1;

alert(a[0]);//未定义

alert(a[2]);//1

说白了,在js中构建稀疏数组很容易,只要你故意在数组元素之间留有空隙。诸如

var arr=[];

arr[0]=0;

arr[200]=200;

2、创建密集数组

可以看出js中的数组一般都是稀疏的,一般遍历稀疏数组比较麻烦。

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

这行代码相当于vardense=array (undefined,undefined,undefined);呵呵,你觉得奇怪吗?这种方法和稀疏阵列没什么区别。看看代码:

//稀疏数组

var Array=new Array(3);

array[2]=' name ';

for(数组中变量a)

{

console.log('index=' a ',value=' array[a]);

}

//密集数组

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

dense[2]=' name ';

for(密集变量a)

{

console.log('index=' a ',value=' dense[a]);

}

使用F12观察控制台输出,如下所示:

可以看出确实有区别:稀疏数组只遍历一次(因为只有一个元素),密集数组遍历三次。

3、总结

javaScript中的数组不同于我们在C或Java等语言中遇到的常规数组。在js中,数组不是由起始地址长度组成的连续地址空间。

Javascript数组实际上是一个对象,但它会自动管理一些‘数字’属性和长度属性。

说的更直接一点,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=新数组();array[0]=0;array[1]=1;

这样创建的js数组符合大家熟悉的数组。

对更多JavaScript相关内容感兴趣的读者可以查看我们的专题:《JavaScript数组操作技巧总结》、《JavaScript排序算法总结》、《JavaScript遍历算法与技巧总结》、《JavaScript数学运算用法总结》、《JavaScript数据结构与算法技巧总结》和《JavaScript查找算法技巧总结》。

希望这篇文章对大家的JavaScript编程有所帮助。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: