arr.forEach没有产生预期的结果

时间:2018-03-10 20:30:21

标签: javascript

我尝试使用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




我错在哪里?

1 个答案:

答案 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