🍃第1期第2题:请创建一个长度为100,值为对应下标的数组
Opened this issue · 0 comments
LinDaiDai commented
请创建一个长度为100,值为对应下标的数组
// cool点的写法:
[...Array(100).keys()]
// 其他方法:
Array(100).join(",").split(",").map((v, i) => i)
Array(100).fill().map((v, i) => i)
后面两种方法相信大家都能看到懂,也没啥好说的了😄,让我们仔细看一下这个比较cool
的写法:
-
使用
Array(100)
创建一个内容全为empty
的数组:[empty x 100]
-
使用
keys()
方法从数组创建一个包含数组键的可迭代对象:可迭代对象是不是让你想到了
generator
,没错的,这里的keys()
是Array.prototype
上的方法,大家可能会把它和我们之前用的比较多的Object.keys()
搞混。说一下它的作用吧,它其实就像刚刚介绍的一样,会创建一个可迭代对象,那么小伙伴们应该知道,一个可迭代对象返回的数据会是这样的:
{ value: 0, done: false }
value
为这次的返回值,done
为当前可迭代对象的逻辑块是否执行完成。所以你会看到以下这段代码是会这样执行的:
let it = Array(100).keys() console.log(it.next) // {value: 0, done: false} console.log(it.next) // {value: 1, done: false} console.log(it.next) // {value: 2, done: false} console.log(it.next) // {value: 3, done: false}
-
至于
[...arr]
这个就是ES6
的写法了,转化为数组,当然你也可以直接用Array.from()
。这两种方式都支持将可迭代对象转换为数组。