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
, 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 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” 항목을 활성화해주세요.
같이 보기
같이 보기