抱歉,如果这是一个愚蠢的问题,我是编程新手,我就是不明白。我知道数组索引为 0,但我仍然不明白这段代码如何给我 10。var array = [];array[3] = "Hello";array[9] = "Goodbye";console.log(array.length);
2 回答
慕盖茨4494581
TA贡献1850条经验 获得超11个赞
见MDN:
作为 Array 类型实例的对象的 length 属性设置或返回该数组中元素的数量。该值是一个无符号的 32 位整数,在数值上始终大于数组中的最高索引。
对于这种情况,第一句话有点误导,但第二句话不是。数组对象具有的最大数组索引属性是 9,所以.length它是 10 (9 + 1)。
你所拥有的是一个稀疏数组,但稀疏数组非常奇怪并且有许多不直观的行为(比如这个)——几乎在所有情况下都应该避免它们。为避免出现稀疏数组,在分配给数组的特定索引时,请确保它下面的每个数组索引也已分配一个值。(例如,不要分配给[2]除非[1]并且[0]也有分配给他们的值)
如果您想将任意数字与数据相关联,但使用数组会导致它可能是稀疏的,那么请改用对象,例如
const wordsByNumber = {
3: 'Hello',
9: 'Goodbye'
};
30秒到达战场
TA贡献1828条经验 获得超6个赞
var array = [];
array[3] = "Hello";
array[9] = "Goodbye";
console.log(array.length);
现在,您有了var array = [undefined, undefined, undefined, "Hello", undefined, undefined, undefined, undefined, undefined, "Goodbye"]这意味着您的数组中现在有 10 个值(其中大多数是未定义的,因为您跳过了索引)。
添加回答
举报
0/150
提交
取消