Javascript JS使用arrow函数和rest参数创建数组
在一个应用程序中,我看到了这部分代码:Javascript JS使用arrow函数和rest参数创建数组,javascript,arrays,ecmascript-6,Javascript,Arrays,Ecmascript 6,在一个应用程序中,我看到了这部分代码: const arrayCreate = length => [...Array(length)]; 它起作用了,但我不知道怎么做。我们有一个arrow函数,它接受一个长度参数,并在数组中创建一个数组,或者什么?:) spread操作符在这里做什么?数组(长度)将创建一个长度空槽的数组,但不能使用.map.forEach等数组方法对其进行映射或迭代 当您将(…)带有空插槽的阵列展开时,它将为每个阵列位置创建一个带有未定义的的新阵列。因此,您现在可以.
const arrayCreate = length => [...Array(length)];
它起作用了,但我不知道怎么做。我们有一个arrow函数,它接受一个长度参数,并在数组中创建一个数组,或者什么?:)
spread操作符在这里做什么?数组(长度)
将创建一个长度
空槽的数组,但不能使用.map
.forEach
等数组方法对其进行映射或迭代
当您将(…
)带有空插槽的阵列展开时,它将为每个阵列位置创建一个带有未定义的的新阵列。因此,您现在可以.map
和.forEach
了,因为它们不是空插槽
因此,这是一种创建长度为的数组的方法,数组中填充未定义的
你也可以这样做
Array(length).fill()
或
有趣!开发人员可能希望在索引中写入第一个值时优化性能,或者能够遍历空值
数组是具有以下属性的javascript对象:
- 分别分配给数组索引/索引处的值的键/值对
- 长度(数组的大小)
- 原型(getter、setter、数组方法…)
数组(长度)
或新数组(长度)
返回{length:0,prototype:{}
。对象为空,长度等于传入的length
现在[…数组(长度)]
将返回{0:undefined,1:undefined,2:undefined:3:undefined,4:undefined,5:undefined,length:5,prototype:{}
。属性现在被分配给它们的未定义的值@Gabrielse的帖子很好地回答了这个问题。不过,我想补充一点
在一个用例中,您可以执行类似于的操作,即当您有一个集合
iterable,并且希望它的元素位于数组中时。例如
const set = new Set();
set.add('foo');
set.add('bar');
set.add('baz');
假设您将项目foo
、bar
、baz
放在一个集合中。一个简单的console.log(set)代码>将导致设置{'foo','bar','baz'}
。你得到的结果当然是一个集合。但是如果您希望这些项目在一个数组中呢
一种简单的方法是使用…
(扩展运算符)应用于数组中的集合。console.log([…set])的结果代码>将与['foo','bar','baz']
相关这是否回答了您的问题arrayCreate(length)
是执行Array(length)
的一种循环方式。在这两种情况下,您都将得到一个长度为length
的数组,其中填充了null
s。不过,这不是一个非常有用的函数,因为它用未定义的
填充数组(不是空的
,也不等同于根本没有填充的数组(长度)
。@cars10m)。创建填充有可操作内容的数组的更有用的方法是表达式。
const set = new Set();
set.add('foo');
set.add('bar');
set.add('baz');