js中的稀疏数组和密集数组

时间:2023-11-10 20:09:08

原文地址: http://www.2ality.com/2012/06/dense-arrays.html

一般来说JavaScript中的数组都是稀疏的,也就是说数组中的元素与元素之间是由空格的,因为一个数组其实就是一个键值映射

一 , 稀疏数组

创建一个指定长度的数组就是一个稀疏数字

js中的稀疏数组和密集数组

当你遍历它时,你会发现它没有元素,js会跳过这些缝隙

js中的稀疏数组和密集数组

还有一些情况也会生成稀疏数组

js中的稀疏数组和密集数组

js中的稀疏数组和密集数组

 二, 密集数组

创建一个密集型的数组其实也很简单

js中的稀疏数组和密集数组

上面的语句就等同于

var arr = new Array(undefined, undefined, undefined)

单从表面上看,这个数组和前面的稀疏数组没有什么区别

js中的稀疏数组和密集数组

但是,你可以遍历这些元素,可以从新为数组里面的每一个元素赋值

js中的稀疏数组和密集数组

实际上,JavaScript并没有常规的数组,所有的数组其实就是个对象,只不过会自动管理一些"数字"属性和length属性罢了.说的更直接一点,JavaScript中的数组根本没有索引,因为索引应该是数字,而JavaScript中数组的索引其实是字符串.arr[1]其实就是arr["1"],给arr["1000"] = 1,arr.length也会自动变为1001.这些表现的根本原因就是,JavaScript中的对象就是字符串到任意值的键值对.注意键只能是字符串.

 相关文章

Iterating over arrays and objects in JavaScript (需要*)

Trying out Underscore on Node.js (需要*)