Array.prototype.fill()
Базовая поддержка Широко доступно
Эта возможность хорошо зарекомендовала себя и работает на многих устройствах и версиях браузеров. Она доступна во всех браузерах с сентября 2016 года.
Метод fill() экземпляров Array изменяет все элементы в диапазоне индексов массива на статическое значение. Он возвращает измененный массив.
Попробуйте
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]
Синтаксис
fill(value) fill(value, start) fill(value, start, end)
Параметры
-
value - Значение, которым будет заполнен массив. Обратите внимание, что все элементы массива будут иметь это точное значение: если
valueявляется объектом, каждая ячейка массива будет ссылаться на этот объект. -
startНеобязательно - Индекс (начиная с 0), с которого следует начать заполнение, преобразованный в целое число.
- Отрицательный индекс отсчитывается с конца массива — если
-array.length <= start < 0, используетсяstart + array.length. - Если
start < -array.lengthилиstartопущены, используется0. - Если
start >= array.length, ни один индекс не заполняется.
- Отрицательный индекс отсчитывается с конца массива — если
-
endНеобязательно - Индекс (начиная с 0), по которому следует закончить заполнение, преобразованный в целое число.
fill()заполняет индексы вплоть до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() является универсальным (generic). Он ожидает, что значение this будет иметь только свойство length. Хотя строки также похожи на массивы, этот метод не подходит для применения к ним, поскольку строки являются неизменяемыми.
Примечание: Использование Array.prototype.fill() на пустом массиве (length = 0) не изменит его, так как в массиве нечего изменять. Чтобы использовать 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]
// 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
Этот пример показывает, как создать матрицу из всех 1, подобную функции ones() в Octave или 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
Использование fill() для заполнения пустого массива
Этот пример показывает, как заполнить массив, установив все элементы на определенное значение. Параметр end не обязательно указывать.
const tempGirls = Array(5).fill("girl", 0);
Обратите внимание, что массив изначально был разреженным массивом без назначенных индексов. fill() все равно способен заполнить этот массив.
Вызов fill() на объектах, не являющихся массивами
Метод fill() считывает свойство length объекта this и устанавливает значение каждого целочисленного свойства от start до end.
const arrayLike = { length: 2 };
console.log(Array.prototype.fill.call(arrayLike, 1));
// { '0': 1, '1': 1, length: 2 }
Спецификации
Совместимость с браузерами
| Настольные | Мобильные | Серверные | |||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome для Android | Firefox для Android | Opera для Android | Safari на iOS | Samsung Internet | WebView Android | WebView на iOS | Bun | Deno | Node.js | |
fill |
45 |
12 |
31 |
32 |
8 |
45 |
31 |
32 |
8 |
5.0 |
45 |
8 |
1.0.0 |
1.0 |
4.0.0 |
См. также
- Полифилл
Array.prototype.fillвcore-js - Руководство по индексированным коллекциям
ArrayTypedArray.prototype.fill()
© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/fill