array.from 可直接生成指定长度的密集数组并映射赋值,接收类数组对象(如 { length: n })和映射函数,按索引 0 到 n-1 执行回调,常用 _ 忽略 undefined 的 value 参数。

Array.from 可以直接生成指定长度的数组,并在创建时通过映射函数为每个元素计算值,无需先创建空数组再遍历填充。
基本语法:用类数组对象 + 映射函数
Array.from 接收两个关键参数:第一个是“可迭代对象”(如 { length: N }),第二个是映射函数(类似 map 的回调)。
- 传入一个只有
length属性的对象(如{ length: 5 }),它会被当作类数组处理,内部按索引0到4迭代 - 映射函数接收三个参数:
value(当前项,对空类数组是undefined)、index、array;通常只用index来生成内容 - 返回的新数组长度等于
length值,每个元素由映射函数的返回值决定
常见用法示例
生成 [0, 1, 2, 3, 4]:
生成 [1, 2, 3, 4, 5]:
生成 5 个随机数:
Array.from({ length: 5 }, () => Math.random());生成 3 个相同的对象(注意:若直接写 () => ({}),每个元素是独立对象):
和 Array(n).fill().map 的区别
Array(5).fill().map((_, i) => i) 看似等价,但有隐患:
-
Array(5)创建的是“空槽”数组(sparse array),fill()才填满它;而Array.from直接创建密集数组,更语义清晰、行为稳定 - 如果省略
fill(),Array(5).map(...)不会执行回调(因为没有实际元素),容易出错 -
Array.from更简洁,一步到位,且支持任意映射逻辑
注意事项
- 映射函数中第一个参数是
undefined(因为类数组里没真实值),所以常用占位符_忽略它 -
length必须是合法非负整数,否则结果可能为空或报错 - 不支持负数或小数作为
length;Array.from({ length: 3.7 })实际生成长度为3的数组
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











