Please note, this is a STATIC archive of website developer.mozilla.org from November 2016, cach3.com does not collect or store any user information, there is no "phishing" involved.

Array.prototype.fill()

This is an experimental technology, part of the ECMAScript 6 (Harmony) proposal.
Because this technology's specification has not stabilized, check the compatibility table for usage in various browsers. Also note that the syntax and behavior of an experimental technology is subject to change in future version of browsers as the spec changes.

요약

fill() 메소드는 배열의 시작 인덱스부터 끝 인덱스까지 정적 값으로 배열 요소들을 채웁니다.

구문

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

매개 변수

value
배열을 채우기 위한 값
start
시작 인덱스(선택 사항)
end
끝 인덱스(선택 사항)

설명

요소를 채우기 위한 간격은 [start, end) 범위를 따릅니다.

fill 메소드는 value, startend 3개 인자를 가집니다. startend 인자는 선택 사항으로써 각각 기본값으로 0this 객체의 length를 가집니다.

start가 음수이면 length+start로 처리됩니다(length는 배열의 길이). end가 음수이면 length+end로 처리됩니다.

fill 함수는 일반 함수이며, this 값이 배열 객체일 필요는 없습니다.

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}

폴리필(Polyfill)

if (!Array.prototype.fill) {
  Array.prototype.fill = function(value) {

    // Steps 1-2.
    if (this == null) {
      throw new TypeError('this is null or not defined');
    }

    var O = Object(this);

    // Steps 3-5.
    var len = O.length >>> 0;

    // Steps 6-7.
    var start = arguments[1];
    var relativeStart = start >> 0;

    // Step 8.
    var k = relativeStart < 0 ?
      Math.max(len + relativeStart, 0) :
      Math.min(relativeStart, len);

    // Steps 9-10.
    var end = arguments[2];
    var relativeEnd = end === undefined ?
      len : end >> 0;

    // Step 11.
    var final = relativeEnd < 0 ?
      Math.max(len + relativeEnd, 0) :
      Math.min(relativeEnd, len);

    // Step 12.
    while (k < final) {
      O[k] = value;
      k++;
    }

    // Step 13.
    return O;
  };
}

명세

Specification Status Comment
ECMAScript 6 (ECMA-262)
The definition of 'Array.prototype.fill' in that specification.
Release Candidate Initial definition.

브라우저 호환성

Feature Chrome Firefox (Gecko) Internet Explorer Opera Safari
Basic support 36[1] 31 (31) Not supported Not supported 7.1
Feature Android Chrome for Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
Basic support Not supported Not supported 31.0 (31) Not supported Not supported iOS 8

[1]  이 기능은 기본 설정에서 선택할 수 있습니다. chrome://flags 으로 가서 “Enable Experimental JavaScript” 항목을 활성화해주세요.

같이 보기

문서 태그 및 공헌자

 이 페이지의 공헌자: ligeek
 최종 변경: ligeek,