Codog

关注微信公众号:Codog代码狗

0%

如何生成从0到100的数组

生成数组的方式有很多,最常用的就是字面量的方式:[1,2,3],但是这里很明显不能手写100个元素😏

很容易想到使用Array方法来构造。

注意参数类型和数量的区别:

1
2
3
new Array(5)  // [empty * 5]
new Array(1,2,3) // [1, 2, 3]
new Array('5') // ["5"]

自然使用new Array(100)来构造,然后使用map方法返回元素索引,但是map对于空位的处理默认会跳过并保留这个值。

所以:

1
new Array(100).map((item, index) => index) // [empty * 100]

ES5 对空位的处理,已经很不一致了,大多数情况下会忽略空位

  • forEach(), filter(), reduce(), every() 和some()都会跳过空位。
  • map()会跳过空位,但会保留这个值
  • join()和toString()会将空位视为undefined,而undefined和null会被处理成空字符串。

这时我们可以使用fill方法来填补空位。(注意fill会覆盖填充,即便索引位置有值也仍会被覆盖)

最后:

1
2
// 无参数fill方法会填充undefined,这会被map识别
new Array(100).fill().map((item, index) => index) // [1,2,3...]