fill方法直接修改原数组,可全量或按范围填充固定值;需先创建定长数组,引用类型填充会共享内存,建议用map或array.from创建独立对象。

fill 方法能直接修改原数组,用指定值快速填充一段或全部元素,适合初始化固定长度的数组。
基础用法:填满整个数组
最常见场景是创建并初始化一个固定长度、全为同一值的数组。注意:必须先创建数组(如用 Array(length)),否则空数组调用 fill 无效。
-
错误写法:
const arr = [].fill(0, 0, 5);→ 返回空数组,因为原数组长度为 0 -
正确写法:
const arr = Array(5).fill(0);→ 得到[0, 0, 0, 0, 0]
指定范围填充:start 和 end 参数控制区间
fill 支持起始索引(含)和结束索引(不含),方便局部初始化或重置部分元素。
-
Array(5).fill(1, 1, 4)→[undefined, 1, 1, 1, undefined](索引 1 到 3 被填为 1) - 索引支持负数:
Array(5).fill('x', -2)→[undefined, undefined, undefined, 'x', 'x']
注意引用类型陷阱:对象/数组会被共享
如果填入的是对象、数组等引用类型,所有位置指向同一个内存地址,修改一处会影响全部。
-
const arr = Array(3).fill({ a: 0 });→ 三个元素共用同一对象 - 安全做法:用 map 创建独立副本:
Array(3).fill().map(() => ({ a: 0 }))
替代方案:需要独立对象时优先用 map 或 Array.from
fill 对原始值(数字、字符串、布尔)安全高效;但涉及对象初始化,推荐更明确的构造方式。
Array.from({ length: 3 }, () => ({ id: Date.now() }))Array(3).map(() => ({ count: 0 }))
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











