Array.prototype.fill()

基线 广泛可用

此功能已得到良好建立,并在许多设备和浏览器版本中都能正常工作。它自以下时间起在所有浏览器中都可用 2016 年 9 月.

fill() 方法是 Array 实例的方法,用于将数组中指定索引范围内的所有元素更改为一个静态值。它返回修改后的数组。

试试看

语法

js
fill(value)
fill(value, start)
fill(value, start, end)

参数

用于填充数组的值。请注意,数组中的所有元素都将是此确切的值:如果value 是一个对象,则数组中的每个槽位都将引用该对象。

start 可选

开始填充的基于零的索引,转换为整数

  • 负索引从数组末尾开始倒数 - 如果-array.length <= start < 0,则使用start + array.length
  • 如果start < -array.length 或省略start,则使用0
  • 如果start >= array.length,则不填充任何索引。
end 可选

结束填充的基于零的索引,转换为整数fill() 填充直到但不包括end

  • 负索引从数组末尾开始倒数 - 如果-array.length <= end < 0,则使用end + array.length
  • 如果end < -array.length,则使用0
  • 如果end >= array.length 或省略end,则使用array.length,导致所有直到末尾的索引都被填充。
  • 如果end 暗示的位置在start 暗示的位置之前或与之相同,则不填充任何内容。

返回值

已修改的数组,填充了value

描述

fill() 方法是一个修改方法。它不会更改this 的长度,但会更改this 的内容。

fill() 方法也会用value 填充稀疏数组中的空槽位。

fill() 方法是泛型的。它只期望this 值具有length 属性。尽管字符串也是类似数组的,但此方法不适合应用于它们,因为字符串是不可变的。

注意:在空数组(length = 0)上使用Array.prototype.fill() 不会修改它,因为数组没有要修改的内容。要在声明数组时使用Array.prototype.fill(),请确保数组的length 非零。请参阅示例

示例

使用 fill()

js
console.log([1, 2, 3].fill(4)); // [4, 4, 4]
console.log([1, 2, 3].fill(4, 1)); // [1, 4, 4]
console.log([1, 2, 3].fill(4, 1, 2)); // [1, 4, 3]
console.log([1, 2, 3].fill(4, 1, 1)); // [1, 2, 3]
console.log([1, 2, 3].fill(4, 3, 3)); // [1, 2, 3]
console.log([1, 2, 3].fill(4, -3, -2)); // [4, 2, 3]
console.log([1, 2, 3].fill(4, NaN, NaN)); // [1, 2, 3]
console.log([1, 2, 3].fill(4, 3, 5)); // [1, 2, 3]
console.log(Array(3).fill(4)); // [4, 4, 4]

// A single object, referenced by each slot of the array:
const arr = Array(3).fill({}); // [{}, {}, {}]
arr[0].hi = "hi"; // [{ hi: "hi" }, { hi: "hi" }, { hi: "hi" }]

使用 fill() 创建一个全为 1 的矩阵

此示例演示如何创建一个全为 1 的矩阵,类似于 Octave 或 MATLAB 的ones() 函数。

js
const arr = new Array(3);
for (let i = 0; i < arr.length; i++) {
  arr[i] = new Array(4).fill(1); // Creating an array of size 4 and filled of 1
}
arr[0][0] = 10;
console.log(arr[0][0]); // 10
console.log(arr[1][0]); // 1
console.log(arr[2][0]); // 1

使用 fill() 填充空数组

此示例演示如何填充数组,将所有元素设置为特定值。不需要指定end 参数。

js
const tempGirls = Array(5).fill("girl", 0);

请注意,该数组最初是一个稀疏数组,没有分配索引。fill() 仍然能够填充此数组。

在非数组对象上调用 fill()

fill() 方法读取thislength 属性,并将从startend 的每个整数键属性的值设置为指定值。

js
const arrayLike = { length: 2 };
console.log(Array.prototype.fill.call(arrayLike, 1));
// { '0': 1, '1': 1, length: 2 }

规范

规范
ECMAScript 语言规范
# sec-array.prototype.fill

浏览器兼容性

BCD 表格仅在启用 JavaScript 的浏览器中加载。

另请参阅