如何复制数组行为?

时间:2012-08-23 12:27:13

标签: javascript arrays object

我知道JavaScript中的数组只不过是一个对象。 当我定义这样的数组时:

var array;
array = [ "a", "b", "c" ];

并运行

Object.keys(array);

我得到以下数组:["0", "1", "2"]array的数组长度为3

当我添加如下属性时:

array["a"] = "d";

Object.keys()正在返回["0", "1", "2", "a"],但array的数组长度仍为3

但是当我添加这样的属性时:

array["3"] = "d";

array的长度现为4

如果array只是另一个对象,那么当我从头开始像var myArray = {}这样的对象时,我怎样才能实现这种行为?

2 个答案:

答案 0 :(得分:1)

.length属性仅包含具有数字索引的属性,特别是整数值大于或等于零的属性。

如果您问如何从数组或对象中获取所有键的总数,那么您可以这样做:

Object.keys(array).length

...因为Object.keys()返回一个本身具有.length属性的数组。

答案 1 :(得分:1)

数组的length属性是最高数字索引+ 1的值。

因此array["3"] = "d";后最高数字索引为3因此长度返回4

Object.keys(array).length应该给你一定的长度。