位置:首页 > JavaScript > JavaScript中如何用fill方法给数组指定区间填充固定值

JavaScript中如何用fill方法给数组指定区间填充固定值

时间:2026-08-12  |  作者:宇宙开黑者  |  阅读:0

fill() 方法会直接在原数组上动手,用给定的值填充从起始索引(包含)到结束索引(不包含)这段区间内的元素。它也支持负数索引。

需要特别留意的是,遇到引用类型时这里只是浅拷贝,因此很容易出现共享引用带来的连带修改问题。

Ja vaScript 中怎么使用 fill 方法用固定值填充数组的指定区间

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() 复制

免责声明:文中图文均来自网络,如有侵权请联系删除,心愿游戏发布此文仅为传递信息,不代表心愿游戏认同其观点或证实其描述。

相关文章

更多

精选合集

更多

大家都在玩

热门话题

大家都在看

更多