JavaScript中如何用fill方法给数组指定区间填充固定值
时间:2026-08-12 | 作者:宇宙开黑者 | 阅读:0fill() 方法会直接在原数组上动手,用给定的值填充从起始索引(包含)到结束索引(不包含)这段区间内的元素。它也支持负数索引。
需要特别留意的是,遇到引用类型时这里只是浅拷贝,因此很容易出现共享引用带来的连带修改问题。
fill() 方法会直接在原数组上动手,把起始索引(包含)到结束索引(不包含)这一段范围内的元素,统一替换成指定的值。
基本语法和参数含义
调用形式为 arr.fill(value, start, end):
- value:用来填充的固定值(可以是数字、字符串、对象、null、undefined 等)
- start(可选):开始填充的索引,默认为 0;支持负数(从末尾倒数)
- end(可选):停止填充的索引(不包含该位置),默认为数组长度;也支持负数
常见使用场景示例
填充部分区间时,注意 end 是“不包含”的边界。
[1, 2, 3, 4, 5].fill(0, 1, 3)→[1, 0, 0, 4, 5](索引 1 和 2 被填为 0)['a', 'b', 'c'].fill('x', -2)→['a', 'x', 'x'](从倒数第 2 位开始填到末尾)new Array(5).fill(7, 2, 4)→[undefined, undefined, 7, 7, undefined](空位被初始化为 undefined,再局部填充)
需要注意的关键细节
fill 操作是浅拷贝行为,对引用类型要特别小心。
- 如果 value 是对象或数组,所有被填位置都指向同一个引用,后续修改会相互影响
- 例如:
const arr = Array(3).fill({ a: 1 }); arr[0].a = 99; console.log(arr)输出三个对象的a都变成 99 - 想填入独立对象,需配合 map 或循环构造,不能直接用 fill
与替代方案对比
相比手动循环或 slice + concat,fill 更简洁,而且是原地操作。
- 无需新建数组,节省内存
- 语义清晰,意图明确,就是“把某段替换成某个值”
- 但不返回新数组,如需不可变操作,应先用
slice()复制
免责声明:文中图文均来自网络,如有侵权请联系删除,心愿游戏发布此文仅为传递信息,不代表心愿游戏认同其观点或证实其描述。
相关文章
更多-
- JavaScript正则表达式批量处理HTML标签转义与替换方法
- 时间:2026-08-21
-
- JavaScript函数默认参数的精准JSDoc类型注解方法
- 时间:2026-08-21
-
- JavaScript设置Cookie的SameSite属性防范CSRF攻击
- 时间:2026-08-21
-
- JavaScript中BOM如何打开新的浏览器窗口标签
- 时间:2026-08-20
-
- JavaScript微任务队列在事件循环中的执行机制
- 时间:2026-08-20
-
- JavaScript中网络超时如何用流程控制实现中断
- 时间:2026-08-20
-
- JavaScript防抖函数原理与减少高频事件触发方法
- 时间:2026-08-20
-
- TypeScript六个颠覆认知的核心知识点解析
- 时间:2026-08-20
精选合集
更多大家都在玩
大家都在看
更多-
- 糖尿病完全不能吃糖吗
- 时间:2026-09-15
-
- 蚂蚁庄园小课堂2026年9月16日最新题目答案
- 时间:2026-09-15
-
- 小鸡答题今天的答案是什么2026年9月16日
- 时间:2026-09-15
-
- 蚂蚁庄园每日答题答案2026年9月16日
- 时间:2026-09-15
-
- 以下哪种粮食是酿造绍兴黄酒的主要原料 蚂蚁庄园今日答案9月16日
- 时间:2026-09-15
-
- 劝学名句“及时当勉励,岁月不待人”出自哪位诗人 蚂蚁庄园今日答案9.16
- 时间:2026-09-15
-
- 蚂蚁庄园今天答题答案2026年9月16日
- 时间:2026-09-15
-
- 蚂蚁庄园答题今日答案2026年9月16日
- 时间:2026-09-15
