本文说明了javascript稀疏数组和密集数组的用法。分享给大家参考,如下:
在学习与下划线. js数组相关的API时,我遇到了稀疏数组,这是我以前从未接触过的。
在这里了解什么是稀疏数组和密集数组。
什么是密集阵列?在Java和C语言中,数组是一个固定长度的连续存储空间。添加的数组的实际位置是地址,长度是n,因此占用的存储空间是地址[0],地址[1],地址[2].地址[n-1]。也就是阵列元素紧密相连,没有缝隙。下面的js代码创建了一个密集数组
var数据=[3,1,6,9,2];什么是稀疏数组?与密集数组相反,javascript不要求数组元素紧密连接,即允许有间隙。以下js代码是合法的:
var稀疏=新数组();稀疏[0]=0;稀疏[3]=3;警报(稀疏[0]);//输出0alert(稀疏[1]);//输出undefined1,创建稀疏数组
下面的代码创建一个固定长度的稀疏数组
var a=新数组(3);a[2]=1;警报(a[0]);//undefinedalert(a[2]);//1说白了,在js中构建稀疏数组很容易,只要刻意让数组元素之间存在间隙。诸如
var arr=[];arr[0]=0;arr[200]=200;2.创建密集阵列
可以看出js中的数组一般都是稀疏的,遍历稀疏数组一般比较麻烦。
var密集=Array.apply(null,Array(3));这一行代码相当于var密集=array(未定义,未定义,未定义);呵呵,这种方法和稀疏阵没什么区别是不是很奇怪?看看代码:
//稀疏数组var Array=new Array(3);数组[2]=' name ';for(数组中的var a){ console . log(' index=' a ',value=' array[a]);}//密集数组var密集=array。apply (null,数组(3));密集[2]=' name ';for(var a in density){ console . log(' index=' a ',value=' density[a]);}使用F12观察控制台输出是:
可以看出是有区别的:稀疏数组只遍历一次(因为只有一个元素),密集数组遍历三次。
3.摘要
javaScript中的数组不像我们在C或Java等语言中遇到的传统数组。在js中,数组不是由起始地址长度组成的连续地址空间。
javascript中的数组实际上是一个对象,但是它会自动管理一些‘数字’属性和长度属性。
更直接地说,JavaScript中的数组根本没有索引,因为索引应该是一个数字,但是JavaScript中数组的索引实际上是一个字符串。
Arr[1]实际上是arr['1']。如果arr['1000']=1,arr.length将自动变为1001。
这些表达式的根本原因是JavaScript中的对象是从字符串到任意值的键值对。
虽然稀疏数组和密集数组的区别不大,但javascript没有语法强制数组稀疏或密集,这只是概念上的区别。
最佳实践是在java或C语言中将js数组视为数组,并让我们的程序员负责使js数组元素连续。
诸如
var数组=[1,2,3,4];例如:
var Array=new Array();数组[0]=0;数组[1]=1;以这种方式创建的js数组符合熟悉的数组。
更多对JavaScript相关内容感兴趣的读者可以查看本网站专题:《JavaScript数组操作技巧总结》、《JavaScript排序算法总结》、《JavaScript遍历算法与技巧总结》、《JavaScript数学运算用法总结》、《JavaScript数据结构与算法技巧总结》、《JavaScript查找算法技巧总结》、《JavaScript错误与调试技巧总结》和0103010
希望本文对JavaScript编程有所帮助。