为了账号安全,请及时绑定邮箱和手机立即绑定

这个数组长度如何等于 10?

这个数组长度如何等于 10?

holdtom 2022-01-20 17:15:19
抱歉,如果这是一个愚蠢的问题,我是编程新手,我就是不明白。我知道数组索引为 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'

};


查看完整回答
反对 回复 2022-01-20
?
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 个值(其中大多数是未定义的,因为您跳过了索引)。


查看完整回答
反对 回复 2022-01-20
  • 2 回答
  • 0 关注
  • 143 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信