fill() 是 javascript 数组原生方法,直接修改原数组指定范围元素为同一值,不创建新数组;支持全填、区间填(含负索引),但引用类型填充需防共享内存问题。

fill() 是 JavaScript 数组的原生方法,用于**直接修改原数组**,把指定范围内的所有元素替换成同一个值。它不创建新数组,操作高效,适合初始化、重置或批量赋值场景。
基础用法:填满整个数组
只传一个参数时,fill(value) 会把数组所有元素都设为该值:
let arr = [1, 2, 3, 4, 5]; arr.fill(0); // [0, 0, 0, 0, 0]
注意:空位(如 new Array(3))也会被填充,结果是含实际值的数组,不再是稀疏数组。
指定起始和结束位置:精准控制范围
fill(value, start, end) 支持两个可选索引参数:
Java JDK 25 来自 OpenJDK 官方归档,版本为 JDK 25,本条下载地址已指向官方 Windows x64 zip 安装包直链,适合调试旧项目或兼容旧版 Java 运行环境。
- start:开始填充的位置(含),默认为 0
- end:停止填充的位置(不含),默认为数组长度
- 索引支持负数(从末尾计数),例如
-1表示最后一个元素
let arr = [1, 2, 3, 4, 5];
arr.fill('x', 1, 4); // [1, 'x', 'x', 'x', 5]
arr.fill('y', -2); // [1, 'x', 'x', 'y', 'y'] (从倒数第二位开始填到末尾)
注意事项:引用类型要小心
如果填充的是对象、数组等引用类型,所有位置将指向**同一个内存地址**:
let arr = new Array(3);
arr.fill({});
arr[0].name = 'Alice';
console.log(arr[1].name); // 'Alice' —— 修改一个,全部跟着变
解决办法:用 map() 或循环逐个新建对象:
let arr = Array.from({ length: 3 }, () => ({}));
// 或
let arr = [...Array(3)].map(() => ({}));
常见实用场景
- 初始化固定长度数组(如 10 个
null或0):new Array(10).fill(0) - 清空某段数据:
arr.fill(null, 2, 5) - 快速标记状态(如批量设为
true):flags.fill(true, start, end)
不复杂但容易忽略:fill 不会触发 setter,也不影响数组 length;它只替换已有索引位置的值。
大量免费API接口:立即使用
涵盖生活服务API、金融科技API、企业工商API、等相关的API接口服务。免费API接口可安全、合规地连接上下游,为数据API应用能力赋能!










