반응형
copyWithin() 메서드
copyWithin() 메서드는 배열의 일부를 얕게 복사한 뒤, 동일한 배열의 다른 위치에 덮어쓰고 그 배열을 반환합니다.
이 때, 크기( 배열의 길이 )를 수정하지 않고 반환합니다.
arr.copyWithin(target[, start,[, end]]);
매개변수
- target : 복사한 값을 넣을 위치를 가리키는 index. 음수를 지정하면 index를 배열의 뒤에서부터 계산합니다.
target이 arr.length보다 크거나 같으면 아무것도 복사하지 않습니다. target이 start 이후라면 복사한 값을 arr.length에 맞춰서 잘라줍니다. - start : 복사를 시작할 위치를 가리키는 index. 음수를 지정하면 index를 배열의 뒤에서부터 계산합니다.
기본값은 0으로, start를 지정하지 않으면 배열의 처음부터 복사를 시작합니다. - end : 복사를 끝낼 위치를 가리키는 index. copyWithin은 end index 이전까지 복사하므로, end index가 가리키는 요소는 제외됩니다. 음수를 지정하면 index를 배열의 뒤에서부터 계산합니다.
기본값은 arr.length로, end를 지정하지 않으면 배열의 끝까지 복사합니다.
const arr = ["안", "녕", "하", "세", "요"];
console.log(arr.copyWithin(2)); // ["안", "녕", "안", "녕", "하"]
2번째 요소부터 0 ~ n번의 요소를 복사합니다. ( 배열의 길이를 초과하는 부분은 무시가 됩니다. )
:: 안녕 + 안녕하세요 ( '세요' 부분은 배열의 길이를 초과하기 때문에 무시가 됩니다. )
const arr = ["안", "녕", "하", "십", "니", "까", "요"];
console.log(arr.copyWithin(2, 1)); // ['안', '녕', '녕', '하', '십', '니', '까']
2번째 요소부터 1번째 요소의 값으로 시작합니다.
:: 안녕 + 녕하십니까요 ( 1번째 요소부터 복사를 했기 때문에 '녕하십니까'가 복사됩니다. '요' 부분은 배열의 길이를 초과하기 때문에 무시됩니다. )
const arr = ["안", "녕", "하", "십", "니", "까", "요"];
console.log(arr.copyWithin(2, 1, 3)); // ['안', '녕', '녕', '하', '니', '까', '요']
2번째 요소부터 1번째 요소의 값으로 시작하고, 3번째 요소까지만 복사한 값을 넣습니다.
:: 안녕 + 녕하 + 니까요 ( 2번째 요소부터 1번째 요소의 값으로 시작하고 3번째요소까지만 복사하기 때문에 4번째 요소부터는 원래 값이 들어오게 됩니다.
const arr = ["안", "녕", "하", "십", "니", "까", "요"];
console.log(arr.copyWithin(0, 3, 3)); // ['안', '녕', '하', '십', '니', '까', '요']
end값이 start값과 같거나 작으면 동작을 하지 않습니다.
const arr = ["안", "녕", "하", "십", "니", "까", "요"];
console.log(arr.copyWithin(-2, -3, -2)); // ['안', '녕', '하', '십', '니', '니', '요']
index가 음수인 경우 뒤에서부터 계산합니다.
배열을 앞에서부터 계산할 때 [ 0, 1, 2, 3, 4, 5, 6 ]
배열을 뒤에서부터 계산할 때 [ -7, -6, -5, -4, -3, -2, -1 ]
배열을 앞에서부터 계산 할 때 | 0 | 1 | 2 | 3 | 4 | 5 | 6 |
배열을 뒤에서부터 계산할 때 | -7 | -6 | -5 | -4 | -3 | -2 | -1 |
arr.copyWithin(-2, -3, -2) === arr.copyWithin(5, 4, 5)와 같습니다.
반환 값
수정한 배열
반응형
'JavaScript | TypeScript > javascript 문법' 카테고리의 다른 글
[ Javascript ] Array.prototype.fill() (0) | 2023.01.02 |
---|---|
[ Javascript ] Array.prototype.every() (0) | 2022.12.28 |
[ Javascript ] Array.prototype.entries() (0) | 2022.12.26 |
[ Javascript ] Array.prototype.concat() (0) | 2022.12.21 |
[ Javascript ] Array.prototype.at() (0) | 2022.12.20 |