The fill()
method of Array instances changes all elements within a range of indices in an array to a static value. It returns the modified array.
Syntax
fill(value)
fill(value, start)
fill(value, start, end)
Parameters
value
- : Value to fill the array with. Note all elements in the array will be this exact value: if
value
is an object, each slot in the array will reference that object.
- : Value to fill the array with. Note all elements in the array will be this exact value: if
start
- : Zero-based index at which to start filling, converted to an integer.
- Negative index counts back from the end of the array — if
start < 0
,start + array.length
is used. - If
start < -array.length
orstart
is omitted,0
is used. - If
start >= array.length
, no index is filled.
- Negative index counts back from the end of the array — if
- : Zero-based index at which to start filling, converted to an integer.
end
- : Zero-based index at which to end filling, converted to an integer.
fill()
fills up to but not includingend
.- Negative index counts back from the end of the array — if
end < 0
,end + array.length
is used. - If
end < -array.length
,0
is used. - If
end >= array.length
orend
is omitted,array.length
is used, causing all indices until the end to be filled. - If
end
is positioned before or atstart
after normalization, no index is filled.
- Negative index counts back from the end of the array — if
- : Zero-based index at which to end filling, converted to an integer.
Return value
The modified array, filled with value
.
Description
The fill()
method is a mutating method. It does not alter the length of this
, but it will change the content of this
.
The fill()
method fills empty slots in sparse arrays with value
as well.
The fill()
method is generic. It only expects the this
value to have a length
property. Although strings are also array-like, this method is not suitable to be applied on them, as strings are immutable.
Note: Using
Array.prototype.fill()
on an empty array (length = 0
) would not modify it as the array has nothing to be modified. To useArray.prototype.fill()
when declaring an array, make sure the array has non-zerolength
. See example.
Examples
Using 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]
// 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" }]
Using fill() to create a matrix of all 1
This example shows how to create a matrix of all 1, like the ones()
function of Octave or MATLAB.
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
Using fill() to populate an empty array
This example shows how to populate an array, setting all elements to a specific value.
The end
parameter does not have to be specified.
const tempGirls = Array(5).fill("girl", 0);
Note that the array was initially a sparse array with no assigned indices. fill()
is still able to fill this array.
Calling fill() on non-array objects
The fill()
method reads the length
property of this
and sets the value of each integer-keyed property from start
to end
.
const arrayLike = { length: 2 };
console.log(Array.prototype.fill.call(arrayLike, 1));
// { '0': 1, '1': 1, length: 2 }