Array.from 是创建稠密数组的灵活方法,可将类数组/可迭代对象转为新数组,并支持通过 map 回调按索引生成默认值;它比 new Array 安全,语义清晰且不可变。

Array.from 是 JavaScript 中创建新数组的灵活方法,它不仅能转换类数组或可迭代对象,还能配合 map 回调快速初始化指定长度、带默认值(甚至按索引计算)的数组。
基础用法:生成空占位数组
只需传入一个具有 length 属性的对象(如 { length: N }),Array.from 就会创建长度为 N 的新数组,每个元素默认为 undefined:
-
Array.from({ length: 3 })→[undefined, undefined, undefined] - 这比
new Array(3)更安全,因为后者创建的是稀疏数组(无实际元素),而Array.from创建的是稠密数组,所有索引都存在
带初始值:用 map 回调填充内容
第二个参数是映射函数,会在每个位置执行,接收 当前元素(undefined)、索引、原数组,推荐用索引生成值:
你接手一个需求时,是不是经常这样:"改一个小字段 → 结果把不相关的代码也改了"、"需求说得很模糊 → 做着做着发现跑偏了"、"数据库加个字段 → 上线才发现漏了数据兼容"、"做了个新功能 → 一个月后自己都忘了当时怎么设计的"、"写到一半被中断 → 再回来不知道从哪继续";这个 Skill 就是专门解决这些问题的。 它会自动探测你的项目环境(JDK、Spring Boot、ORM、数据库、前端框架),记在
-
Array.from({ length: 4 }, (_, i) => i)→[0, 1, 2, 3] -
Array.from({ length: 3 }, () => 'a')→['a', 'a', 'a'] -
Array.from({ length: 5 }, (_, i) => i * 2)→[0, 2, 4, 6, 8]
注意:避免常见误区
不要直接传数组字面量(如 [...Array(5)])替代 —— 它依赖展开运算符和稀疏数组,行为不稳定;也不要误用 Array(5).fill(0),虽然结果相似,但 Array.from 更具语义清晰性且支持动态计算逻辑。
立即学习“Java免费学习笔记(深入)”;
另外,Array.from 不会修改原对象,始终返回全新数组,适合函数式编程场景。

















