数组中的empty元素

当跨下标给数组赋值时,数组会产生empty元素。

let arr = [1]
arr[100] = 10;

打印arr的结果为[1, empty × 99, 10]。中间存在99个空元素。打印这个数组的length,结果为101,是正常的,但是如果此时用forEach遍历这个数组,只能循环两次。

let arr = [1];
arr[100] = 10;

arr.forEach(item => {
  console.log(item);
});

// 输出:
// 1
// 10

这种现象在MDN上也有相应的解释:

forEach() 方法按升序为数组中含有效值的每一项执行一次 callback 函数,那些已删除或者未初始化的项将被跳过(例如在稀疏数组上)。

可以用for循环解决这个问题。

for (let item of arr) {
  console.log(item);
}

此时会打印出1、99个undefined10

如果您觉得本文对您有用,欢迎捐赠或留言~
微信支付
支付宝

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注