Array.prototype.fill()

Baseline 已廣泛支援

此特性已相當成熟,可在許多裝置和瀏覽器版本上使用。自 2015 年 9 月以來,該特性已在各大瀏覽器中可用。

fill() 方法用於更改陣列中指定索引範圍內的所有元素為某個靜態值。它會返回修改後的陣列。

試一試

const array = [1, 2, 3, 4];

// Fill with 0 from position 2 until position 4
console.log(array.fill(0, 2, 4));
// Expected output: Array [1, 2, 0, 0]

// Fill with 5 from position 1
console.log(array.fill(5, 1));
// Expected output: Array [1, 5, 5, 5]

console.log(array.fill(6));
// Expected output: Array [6, 6, 6, 6]

語法

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

引數

value

用於填充陣列的值。請注意,陣列中的所有元素都將是此確切值:如果 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.lengthend 被省略或為 undefined,則會使用 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 的矩陣

此示例演示瞭如何建立 Octave 或 MATLAB 中的 ones() 函式類似的、全為 1 的矩陣。

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® 2026 語言規範
# sec-array.prototype.fill

瀏覽器相容性

另見