ES6에서는 배열 복사를 위한 2개의 메소드, copyWithin()과 fill()이 추가되었습니다. 개인적으로는 딱히 필요한 상황이 없었던 것 같지만, 일단 필요에 의해서 추가되었을 테니 나중을 위해서 정리를 해봅니다.
1. Array.prototype.copyWithin()
- copyWithin() 메소드는 배열의 일부를 복사하여, 지정된 위치에 덮어쓰고 해당 배열을 반환합니다.
- 배열의 길이는 변경되지 않습니다.
- copyWithin() 메소드는 원본 배열을 변경시킵니다.
[문법]
Parameter | Description |
target | (필수) 복사한 엘리먼트 붙여 넣을 위치의 인덱스 |
start | (옵션) 복사를 시작할 위치의 인덱스 (default: 0) |
end |
(옵션) 복사를 끝낼 위치의 인덱스 (default: arr.length) * end에 해당하는 요소는 복사에서 제외됩니다. |
* 음수인 경우 인덱스를 배열 끝에서부터 계산합니다. (arr.length+end로 계산하면 됩니다.)
[예제]
위의 파라미터 설명은 다소 혼란스러울 수 있으므로 예제로 살펴보겠습니다.
먼저 기본적인 사용법은 다음과 같습니다.
좀 더 다양한 parameter에 따른 사용 예는 다음과 같습니다.
2. Array.prototype.filI()
- filI() 메서드는 배열의 지정된 영역을 정적인 하나의 값으로 덮어씁니다.
- fill() 메서드는 원본 배열을 변경합니다.
[문법]
Parameter | Description |
value | (필수) 배열을 채워 넣을 값 |
start | (옵션) 채워넣기 위치의 시작 인덱스 (default: 0) |
end |
(옵션) 채워 넣기를 끝낼 위치의 인덱스 (default: arr.length) * end에 해당하는 요소는 채워 넣기에서 제외됩니다. * 음수인 경우 인덱스를 배열 끝에서부터 계산합니다. (length+end) |
copywithin은 일정 구간의 배열 값을 지정된 위치에 복사해서 넣어주는 반면, fill의 경우는 하나의 값을 지정된 영역에 반복해서 입력합니다.
[예제]
fill을 사용하는 다양한 case에 대한 예제입니다.
값을 Object로 넣는 경우에는 다소 특이한 모습을 보여줍니다. 즉, 객체 자체가 값이 아닌 reference로 반복 입력되어 배열 중 하나의 객체의 값을 변경하면 모든 객체 값이 변경됩니다.
이번 글에서 다룬 메소드는 사실 크게 필요한 메소드인지는 잘 모르겠습니다. 개인적으로 아직 두 개의 메소드를 사용할만한 상황이 떠오르지를 않네요. ^^;
'웹 > JavaScript' 카테고리의 다른 글
[JS, ES6] 객체 리터럴 한눈에 살펴보기 (0) | 2020.06.24 |
---|---|
[ES6] 배열 메소드 : entries(), keys(), values() (0) | 2020.05.17 |
[ES6] 배열 메소드 : find(), findIndex() (1) | 2020.05.07 |
[ES6] 배열 메소드 : from(), of() (0) | 2020.05.02 |
[ES5] 배열 메소드 : reduce(), reduceRight() (2) | 2020.04.13 |