在下面的示例中,array2.length只是10,而在我看来应该是13。
array2.length
10
13
为什么“字符串键控”索引不增加length数组的?
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 = "";
Javascript数组不能具有“字符串索引”。Javascript Array仅在数字上进行索引。设置“字符串索引”时,就是在设置对象的属性。这些是等效的:
Array
array.a = 'foo'; array['a'] = 'foo';
这些属性不是阵列“数据存储”的一部分。
如果要“关联数组”,则需要使用一个对象:
var obj = {}; obj['a'] = 'foo';
也许最简单的可视化方法是使用文字符号而不是new Array:
new Array
// numerically indexed Array var array = ['foo', 'bar', 'baz']; // associative Object var dict = { foo : 42, bar : 'baz' };