Movatterモバイル変換


[0]ホーム

URL:


  1. Веб-технологии для разработчиков
  2. JavaScript
  3. Справочник по JavaScript
  4. Стандартные встроенные объекты
  5. Array
  6. Array.prototype.fill()

This page was translated from English by the community.Learn more and join the MDN Web Docs community.

View in EnglishAlways switch to English

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 г.⁩.

Методfill() заполняет все элементы массива от начального до конечного индексов одним значением.

Интерактивный пример

const array1 = [1, 2, 3, 4];// Fill with 0 from position 2 until position 4console.log(array1.fill(0, 2, 4));// Expected output: Array [1, 2, 0, 0]// Fill with 5 from position 1console.log(array1.fill(5, 1));// Expected output: Array [1, 5, 5, 5]console.log(array1.fill(6));// Expected output: Array [6, 6, 6, 6]

Синтаксис

arr.fill(value[, start = 0[, end = this.length]])

Параметры

value

Значение, заполняющее массив.

start

Необязательный параметр. Начальный индекс.

end

Необязательный параметр. Конечный индекс.

Возвращаемое значение

Изменённый массив.

Описание

Элементы заполняются в полузакрытом интервале [start,end).

Методfill принимает до трёх аргументов —value,start иend. Аргументыstart иend являются необязательными со значениями по умолчанию, равными0 иlength объектаthis соответственно.

Если аргументstart является отрицательным, он трактуется какlength+start, гдеlength — это длина массива. Если аргументend является отрицательным, он трактуется какlength+end.

Методfill намеренно являетсяобобщённым, он не требует, чтобы значениеthis внутри него было объектомArray.

Методfill являетсяизменяющим методом, он изменит объектthis и вернёт его, а не просто вернёт копию.

Если аргумент value является объектом, то методfill заполнит массив ссылками на этот объект.

Примеры

[1, 2, 3].fill(4);               // [4, 4, 4][1, 2, 3].fill(4, 1);            // [1, 4, 4][1, 2, 3].fill(4, 1, 2);         // [1, 4, 3][1, 2, 3].fill(4, 1, 1);         // [1, 2, 3][1, 2, 3].fill(4, 3, 3);         // [1, 2, 3][1, 2, 3].fill(4, -3, -2);       // [4, 2, 3][1, 2, 3].fill(4, NaN, NaN);     // [1, 2, 3][1, 2, 3].fill(4, 3, 5);         // [1, 2, 3]Array(3).fill(4);                // [4, 4, 4][].fill.call({ length: 3 }, 4);  // {0: 4, 1: 4, 2: 4, length: 3}// Объекты заполняются по ссылке.var arr = Array(3).fill({}) // [{}, {}, {}];arr[0].hi = "hi"; // [{ hi: "hi" }, { hi: "hi" }, { hi: "hi" }]

Полифил

if (!Array.prototype.fill) {  Object.defineProperty(Array.prototype, 'fill', {    value: function(value) {      // Шаги 1-2.      if (this == null) {        throw new TypeError('this is null or not defined');      }      var O = Object(this);      // Шаги 3-5.      var len = O.length >>> 0;      // Шаги 6-7.      var start = arguments[1];      var relativeStart = start >> 0;      // Шаг 8.      var k = relativeStart < 0 ?        Math.max(len + relativeStart, 0) :        Math.min(relativeStart, len);      // Шаги 9-10.      var end = arguments[2];      var relativeEnd = end === undefined ?        len : end >> 0;      // Шаг 11.      var final = relativeEnd < 0 ?        Math.max(len + relativeEnd, 0) :        Math.min(relativeEnd, len);      // Шаг 12.      while (k < final) {        O[k] = value;        k++;      }      // Шаг 13.      return O;    }  });}

Если вам нужно поддерживать действительно устаревшие движки JavaScript, которые не поддерживаютObject.defineProperty, то лучше вообще не использовать полифилы для методов Array.prototype, так как вы не можете сделать их не перечисляемыми.

Спецификации

Specification
ECMAScript® 2026 Language Specification
# sec-array.prototype.fill

Совместимость с браузерами

Смотрите также

Help improve MDN

Learn how to contribute

This page was last modified on byMDN contributors.


[8]ページ先頭

©2009-2025 Movatter.jp