一、代码实现
let arr = Array.from({length: 100}, (_, i) => i + 1);
二、代码分析
1、Array.from(arrayLike, mapFn)
(1)arrayLike
类数组对象(如 { length: 100 })本身没有索引属性(如 0: undefined, 1: undefined...),但 Array.from()`会把它转换成 [undefined, undefined, ..., undefined](共 100 项)
(2)mapFn(可选)
(_, i) => i + 1:
_:当前元素的值(这里是 undefined,用 `_` 表示忽略)
i:当前索引(从 0 开始)
i + 1:将索引 i转换为 1到 100的数字
三、为什么不用 new Array(100).fill(0).map((_, i) => i + 1)
虽然这种方式也能实现相同效果,但:
1. Array.from()`更简洁,直接一步完成创建和映射。
2. new Array(100).fill(0)`会先创建一个填充 0的数组,多了一步操作。
四、其他应用场景
1、生成字母序列:
Array.from({ length: 26 }, (_, i) => String.fromCharCode(65 + i));// 输出: ['A', 'B', 'C', ..., 'Z']
2、生成斐波那契数列:
Array.from({ length: 10 }, (_, i) => (i <= 1 ? 1 : fib[i - 1] + fib[i - 2]}));