Array.prototype.fill()
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.
Array
實例的fill()
方法會將陣列中某個範圍內的所有元素更改為靜態值,並回傳修改後的陣列。
嘗試一下
const array1 = [1, 2, 3, 4];
/ 從索引 2 到索引 4 位置填入 0
console.log(array1.fill(0, 2, 4));
/ 預期輸出:Array [1, 2, 0, 0]
/ 從索引 1 開始填入 5
console.log(array1.fill(5, 1));
/ 預期輸出:Array [1, 5, 5, 5]
console.log(array1.fill(6));
/ 預期輸出: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
之前的位置(不包含end
)。- 負數索引表示從陣列末尾開始計算——如果
-array.length <= end < 0
,則會使用end + array.length
。 - 若
end < -array.length
,則會使用0
。 - 若
end >= array.length
、end
省略或為undefined
,則會使用array.length
,使所有元素都被填充。 - 若
end
指定的位置早於或等於start
指定的位置,則不會填充任何元素。
- 負數索引表示從陣列末尾開始計算——如果
回傳值
修改後的陣列,填充了 value
。
描述
範例
使用 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]
/ 單一物件的參考,陣列中的每個槽位都指向相同的物件:
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); / 建立長度為 4,且全部填入 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()
方法會讀取 this
的 length
屬性,並將 start
到 end
之間的所有整數鍵屬性設定為 value
。
js
const arrayLike = { length: 2 };
console.log(Array.prototype.fill.call(arrayLike, 1));
/ { '0': 1, '1': 1, length: 2 }
規範
Specification |
---|
ECMAScript® 2026 Language Specification # sec-array.prototype.fill |