我尝试使用let arr = Array(5)
arr.forEach((item, index) => arr[index] = index)
console.log(arr)
// expected output:
// [0, 1, 2, 3, 4]
// instead I get
// [
// undefined,
// undefined,
// undefined,
// undefined,
// undefined
// ]
填充使用每个元素的索引创建的数组:
C++ chatbot project

我错在哪里?
答案 0 :(得分:2)
您需要使用函数.fill()
该数组实际上是空的,因此forEach
不会迭代。
new Array(arrayLength)
arrayLength
如果传递给Array构造函数的唯一参数是0到232-1(含)之间的整数,则返回一个新的JavaScript数组,其length属性设置为该数字(注意:这意味着arrayLength空插槽的数组) ,而不是具有实际未定义值的插槽)。如果参数是任何其他数字,则抛出RangeError异常。
let arr = Array(5).fill();
arr.forEach((item, index) => { arr[index] = index })
console.log(arr);

为什么在将第一行更改为
let arr = [...Array(5)]
后,我的代码才有效?
let arr = Array(5);
Array.from(arr) // equals to [...arr];
.apply
"扩展"将被省略的元素转换为正确的参数,结果最终会像Array一样(未定义,未定义,未定义,未定义,未定义)Reference