此頁面由社群從英文翻譯而來。了解更多並加入 MDN Web Docs 社群。
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 2015年9月.
Array 實例的fill() 方法會將陣列中某個範圍內的所有元素更改為靜態值,並回傳修改後的陣列。
In this article
嘗試一下
const array1 = [1, 2, 3, 4];// 從索引 2 到索引 4 位置填入 0console.log(array1.fill(0, 2, 4));// 預期輸出:Array [1, 2, 0, 0]// 從索引 1 開始填入 5console.log(array1.fill(5, 1));// 預期輸出:Array [1, 5, 5, 5]console.log(array1.fill(6));// 預期輸出:Array [6, 6, 6, 6]語法
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() 方法屬於變異方法,它不會改變this 的長度,但會更改this 的內容。
fill() 方法也會填充稀疏陣列中的空槽,使其值變為value。
fill() 方法是通用的,它只要求this 物件具有length 屬性。雖然字串具有類似陣列的特性,但因為字串是不可變的,無法對其使用此方法。
備註:如果對長度為 0 的空陣列(length = 0)使用Array.prototype.fill(),則不會產生任何變化,因為陣列內沒有任何元素可供修改。若要在宣告陣列時使用Array.prototype.fill(),請確保陣列的length 為非零值。參見範例。
範例
>使用 fill()
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() 函式。
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]); // 10console.log(arr[1][0]); // 1console.log(arr[2][0]); // 1使用 fill() 來填充空陣列
此範例展示如何填充一個陣列,使所有元素都設為特定值。end 參數不是必須的。
const tempGirls = Array(5).fill("girl", 0);請注意,該陣列最初是一個稀疏陣列,但fill() 仍然能夠填充此陣列。
在非陣列物件上調用 fill()
fill() 方法會讀取this 的length 屬性,並將start 到end 之間的所有整數鍵屬性設定為value。
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> |