一尘不染

为什么数组中的字符串索引不会增加“长度”?

javascript

在下面的示例中,array2.length只是10,而在我看来应该是13

为什么“字符串键控”索引不增加length数组的?

我可以存储东西并仍然可以访问它,而VS调试器显示这些数组已正确存储。那么为什么length不增加呢?

var array2 = new Array();
array2["a"] = new Array();
array2["b"] = new Array();
array2["c"] = new Array();
for (var i = 0; i < 10; ++i)
    array2[i] = new Array();

var nothing = "";
for (var i = 0; i < array2.length; ++i)
    nothing = "";

阅读 303

收藏
2020-05-01

共1个答案

一尘不染

Javascript数组不能具有“字符串索引”。Javascript
Array仅在数字上进行索引。设置“字符串索引”时,就是在设置对象的属性。这些是等效的:

array.a = 'foo';
array['a'] = 'foo';

这些属性不是阵列“数据存储”的一部分。

如果要“关联数组”,则需要使用一个对象:

var obj = {};
obj['a'] = 'foo';

也许最简单的可视化方法是使用文字符号而不是new Array

// numerically indexed Array
var array = ['foo', 'bar', 'baz'];

// associative Object
var dict = { foo : 42, bar : 'baz' };
2020-05-01