【发布时间】:2018-03-01 18:11:35
【问题描述】:
我对 javascript 数组以及索引在这些数组中的工作方式感到困惑。无论数组中有多少键值元素,数组的长度始终为 0。我们还可以看到,只要键是字符串,数组就只有两个元素。让我们考虑场景 1,我有以下代码。
arr = [];
arr['home'] = 1234;
arr['cat'] = 12345;
console.log(arr.length);
console.log(arr);
现在考虑第二种情况,我有一个空数组,我为数组的第 20 个索引分配了一些数字。然后当我输出数组时,长度显示为 21,所有其他位置都是“未定义”。
arr = [];
arr[20] = 20;
console.log(arr.length); // Length shows 20 Size of array increased to 21
现在在第三种情况下,我将同时分配编号索引和字符串索引,它显示了另一种奇怪的行为。数组的长度不计算基于字符串的索引的值。即使我有 4 个数字索引和一个基于字符串的索引。所以长度应该是6,但长度显示为5。
arr = [];
arr[4] = 4;
arr['home'] = 'home';
console.log(arr);
现在我有两个问题。首先,为什么长度函数不考虑字符串索引项?其次,为什么在编号索引的情况下,数组大小会增加到至少该数字?
【问题讨论】:
-
数组只能有数字键
-
您是否尝试过运行代码。这是我问过的问题 - @RolandStarke
标签: javascript arrays hashmap associative-array