★ wanayoo — archive 1999 https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Global_Objects/Array/fillNouvelle recherche | Portail wanayoo

Apply your JS skills to key Mozilla projects as an MDN Fellow! http://mzl.la/MDNFellowship

mozilla
Your Search Results

    Array.prototype.fill()

    Это экспериментальная технология, часть предложения Harmony (ECMAScript 6).
    Поскольку спецификация этой технологии ещё не стабилизировалась, проверьте таблицу совместимости её использования в различных браузерах. Также обратите внимание, что синтаксис и поведение экспериментальной технологии могут быть изменены в будущих версиях браузеров в соответствии с изменениями в спецификации.

    Сводка

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

    Синтаксис

    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 и вернёт его, а не просто вернёт копию.

    Примеры

    [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, -2)       // [4, 2, 3]
    [1, 2, 3].fill(4, NaN, NaN)     // [1, 2, 3]
    [].fill.call({ length: 3 }, 4)  // {0: 4, 1: 4, 2: 4, length: 3}
    

    Полифилл

    if (!Array.prototype.fill) {
      Array.prototype.fill = 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;
      };
    }
    

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

    Спецификация Статус Комментарии
    ECMAScript 6 (ECMA-262)
    Определение 'Array.prototype.fill' в этой спецификации.
    Черновик Изначальное определение.

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

    Возможность Chrome Firefox (Gecko) Internet Explorer Opera Safari
    Базовая поддержка 36 [1] 31 (31) Нет Нет 7.1
    Возможность Android Chrome для Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
    Базовая поддержка Нет Нет 31.0 (31) Нет Нет iOS 8

    [1] Возможность доступна к включению через настройки. По адресу chrome://flags активируйте запись «Включить экспериментальный JavaScript».

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

    Метки документа и участники

    Contributors to this page: Mingun
    Обновлялась последний раз: Mingun,
    Скрыть боковую панель