当跨下标给数组赋值时,数组会产生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个undefined
和10
。
如果觉得我的文章对您有用,请您随意打赏。您的支持将鼓励我更加努力创作!
如无特殊声明,文章均为原创,若有不正之处,万望告知。转载请附上原文地址,十分感谢!