可尝试的生成方式及生成结果
- Array(5).map(val => ({})) | 生成 empty 数组 ❌ | |
- Array(5).forEach(val => ({})) | 生成 empty 数组 ❌ | |
- Array(5).fill({}) | 生成 要求数组, ❗️ 注意:但是使用中存在问题。详见 fill有什么问题? | |
- Array(5).fill() | 生成 undefined 数组 ❌ | |
- Array.from(Array(5).map(val => ({}))) | 生成 undefined 数组 ❌ | |
- Array.from(Array(5)).map(val => ({})) | 生成 要求数组 | |
- Array.of(5) | 生成 含一个元素 5 数组 ❌ | |
- [...Array(5).keys()].map(val => ({})) | 生成 要求数组 |
衍生问题:
如何创建一个长度为n的数组,每个元素都是undefined / 0?
https://www.zhihu.com/question/25218632
如何创建一个长度为n的数组,元素从1到n?
生成数组方式对比
方法名 | 用例 | 输出 | 备注 |
Array | Array(1,2,3) | [1, 2, 3] | 接收元素列,当元素仅一个且为数字时,生成长度为该数字的空empty数组 |
Array(3) | [empty × 3] | ||
Array.of | Array.of(7) | [7] | 接收元素列,没有特殊场景 |
Array.of(7, 6, 5) | [7, 6, 5] | ||
Array.form | Array.from('foo') | ["f", "o", "o"] | 接收类数组或可迭代对象,第二个参数可以指定为处理元素的方法 |
Array.from([1, 2, 3], x => x + x) | [2, 4, 6] | ||
Array.from(new Set(['foo', 'bar', 'baz', 'foo'])) | ["foo", "bar", "baz"] | ||