本文主要介绍了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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。