NRa*_*Raf 16 javascript arrays
我注意到如果我这样做:
Array(n).map(() => console.log('test'))
Run Code Online (Sandbox Code Playgroud)
我没有打印任何东西.
但是,如果我这样做:
Array(n).fill().map(() => console.log('test'))
Run Code Online (Sandbox Code Playgroud)
我test打印出来的n时间.
为什么会这样?如果我这样做,Array(n).length我会回来n.
我注意到在REPL中Array(5)返回:
[ , , , , ]
而Array(5).fill()回报:
[ undefined, undefined, undefined, undefined, undefined ]
在这两种情况下,typeof数组中的任何元素=== undefined.
发生什么了?
aps*_*ers 22
map仅对数组的已定义整数属性进行操作.Array(n)不会设置整数属性Array(n).fill().有之间的差异不存在的属性和一个现存的属性,其值是undefined.
Array(n)设置length数组的属性,但不设置任何属性.数组对象没有任何整数属性.
.fill将数组的所有整数属性设置为从0到小于1 length.在Array(n)设置length新aray 的属性时,然后.fill()定义并设置每个整数属性n-1.创建的数组Array(n).fill() 确实具有最多定义的属性length - 1.(属性恰好设置为undefined,因为您没有传递参数fill,但它们确实存在.)
在pracitcal方面,你可以看到,如果你做的差Object.keys(Array(4))与(空数组)Object.keys(Array(4).fill())(字符串列表"0"来"3").在第一种情况下,属性不存在; 在第二种情况下他们这样做.
小智 6
Array(n) 创建一个大小为n的新数组,但内容尚未定义。
Array(n).fill() 创建一个大小为n的数组,其中每个元素都设置为您传递给fill的值,或者因为您未传递任何内容而未定义的情况。
Array(n).fill('test') 创建一个大小为n的数组,并填充“测试”。
| 归档时间: |
|
| 查看次数: |
1354 次 |
| 最近记录: |