一、代碼實現
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]}));