MDN’s new design is in Beta! A sneak peek: https://blog.mozilla.org/opendesign/mdns-new-design-beta/

Array.prototype.fill()

This is a new technology, part of the ECMAScript 2015 (ES6) standard.
This technology's specification has been finalized, but check the compatibility table for usage and implementation status in various browsers.

요약

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 2015 (6th Edition, ECMA-262)
The definition of 'Array.prototype.fill' in that specification.
Standard Initial definition.

브라우저 호환성

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

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

같이 보기

문서 태그 및 공헌자

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