发现了Array.from的新大陆

45 阅读1分钟

今天在做需求的时候,遇到一个小问题。 我想要得到一个有10个长度的对象数组,对象的结构是后端返回的object结构。

我的第一反应是 new Array(10), 然后map得到这个对象数组。 但是,这样只会得到一个全是empty的10个长度的数组。因为map遍历遇到空值会跳过,但是不会跳过undefined和null

然后,就有了下面这个写法:

const a = Array.from({ length: 10 }, () => ({
        id: 1,
        uid: 1,
        number: 'BB1234556',
        coinid: 1,
        direction: 1, 
        type: 1,
        status: 1,
      }))

MDN 的解释:

image.png

image.png

这个可迭代对象就很有意思。就不展开讲了。因为我也没搞懂,哈哈。后面再说。

1、Array.from第一个参数可以接受一个带length属性的对象。他会为你创造一个数组。

image.png

2、第二个参数接收一个回调,而且回调跟map的回调类似,更神奇的是,他不会创建中间数组,你可以直接对你创建出来的数组进行操作;

image.png

神奇不??!~~ 不要太好用啊。

=================================

然后,MDN上还有官方给的很多其他用法:

image.png

太宝藏了。 自己去看吧。

====================================

补充一下: 得到一个默认填充的数组,fill也可以实现。

Array(3).fill({a:1})

image.png