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.
Phương thức fill() của các instance Array thay đổi tất cả các phần tử trong một phạm vi chỉ số của mảng thành một giá trị tĩnh. Nó trả về mảng đã được sửa đổi.
Try it
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]
Syntax
fill(value)
fill(value, start)
fill(value, start, end)
Parameters
value-
Giá trị để điền vào mảng. Lưu ý rằng tất cả các phần tử trong mảng sẽ có chính xác giá trị này: nếu
valuelà một object, mỗi slot trong mảng sẽ tham chiếu đến object đó. startOptional-
Chỉ số dựa trên 0 để bắt đầu điền, được chuyển đổi thành số nguyên.
- Chỉ số âm đếm ngược từ cuối mảng — nếu
-array.length <= start < 0, thìstart + array.lengthđược dùng. - Nếu
start < -array.lengthhoặcstartbị bỏ qua, thì0được dùng. - Nếu
start >= array.length, thì không có chỉ số nào được điền.
- Chỉ số âm đếm ngược từ cuối mảng — nếu
endOptional-
Chỉ số dựa trên 0 để kết thúc việc điền, được chuyển đổi thành số nguyên.
fill()điền đến nhưng không bao gồmend.- Chỉ số âm đếm ngược từ cuối mảng — nếu
-array.length <= end < 0, thìend + array.lengthđược dùng. - Nếu
end < -array.length, thì0được dùng. - Nếu
end >= array.lengthhoặcendbị bỏ qua hoặc làundefined, thìarray.lengthđược dùng, khiến tất cả các chỉ số đến cuối được điền. - Nếu
endngụ ý một vị trí trước hoặc tại vị trí màstartngụ ý, thì không có gì được điền.
- Chỉ số âm đếm ngược từ cuối mảng — nếu
Return value
Mảng đã được sửa đổi, được điền với value.
Description
Phương thức fill() là một mutating method. Nó không thay đổi độ dài của this, nhưng sẽ thay đổi nội dung của this.
Phương thức fill() cũng điền các slot rỗng trong mảng thưa (sparse) với value.
Phương thức fill() là generic. Nó chỉ yêu cầu giá trị this có thuộc tính length. Mặc dù chuỗi cũng giống mảng, phương thức này không phù hợp để áp dụng lên chúng vì chuỗi là bất biến.
Note:
Dùng Array.prototype.fill() trên một mảng rỗng (length = 0) sẽ không thay đổi nó vì mảng không có gì để sửa đổi.
Để dùng Array.prototype.fill() khi khai báo một mảng, hãy đảm bảo mảng có length khác không.
Xem ví dụ.
Examples
>Dùng 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" }]
Dùng fill() để tạo ma trận toàn số 1
Ví dụ này cho thấy cách tạo một ma trận toàn số 1, giống như hàm ones() của Octave hoặc 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
Dùng fill() để điền vào một mảng rỗng
Ví dụ này cho thấy cách điền vào một mảng, đặt tất cả các phần tử thành một giá trị cụ thể.
Tham số end không cần được chỉ định.
const tempGirls = Array(5).fill("girl", 0);
Lưu ý rằng mảng ban đầu là mảng thưa (sparse array) không có chỉ số nào được gán. fill() vẫn có thể điền vào mảng này.
Gọi fill() trên các đối tượng không phải mảng
Phương thức fill() đọc thuộc tính length của this và đặt giá trị của mỗi thuộc tính có khóa là số nguyên từ start đến end.
const arrayLike = { length: 2 };
console.log(Array.prototype.fill.call(arrayLike, 1));
// { '0': 1, '1': 1, length: 2 }
Specifications
| Thông số kỹ thuật |
|---|
| ECMAScript® 2027 Language Specification> # sec-array.prototype.fill> |