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, start와 end 3개 인자를 가집니다. start와 end 인자는 선택 사항으로써 각각 기본값으로 0과 this 객체의 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” 항목을 활성화해주세요.
같이 보기
같이 보기