배열의 모든 요소를 복제하기
자바스크립트에서 배열을 복제하는 방법은 여러 가지가 있습니다. 이 글에서는 다양한 방법을 알아보고 각각의 장단점을 살펴보겠습니다.
1. spread 연산자 사용
const originalArray = [1, 2, 3, 4, 5];
const clonedArray = [...originalArray];
console.log(clonedArray); // [1, 2, 3, 4, 5]
spread 연산자 (...
)를 사용하면 배열을 복제할 수 있습니다. 이 방법은 간단하고 직관적이며 가장 많이 사용되는 방법입니다.
장점:
- 손쉽게 복제할 수 있습니다.
- 복제된 배열과 원본 배열은 서로 독립적입니다.
단점:
- 중첩된 배열의 경우, 내부 배열은 참조로 복제되므로 내부 배열의 값을 변경하면 복제된 배열과 원본 배열 모두에 반영됩니다.
2. slice 메서드 사용
const originalArray = [1, 2, 3, 4, 5];
const clonedArray = originalArray.slice();
console.log(clonedArray); // [1, 2, 3, 4, 5]
slice()
메서드를 사용하여 배열을 복제할 수도 있습니다. slice()
메서드의 매개변수를 생략하면 원본 배열의 모든 요소가 복제됩니다.
장점:
- spread 연산자와 마찬가지로 간단하고 직관적인 방법입니다.
- 복제된 배열과 원본 배열은 서로 독립적입니다.
단점:
- 중첩된 배열의 경우, 내부 배열은 참조로 복제되므로 내부 배열의 값을 변경하면 복제된 배열과 원본 배열 모두에 반영됩니다.
3. JSON.stringify와 JSON.parse 사용
const originalArray = [1, 2, 3, 4, 5];
const clonedArray = JSON.parse(JSON.stringify(originalArray));
console.log(clonedArray); // [1, 2, 3, 4, 5]
JSON.stringify()
메서드를 사용하여 배열을 문자열로 변환하고, JSON.parse()
메서드를 사용하여 문자열을 다시 배열로 변환하여 복제할 수도 있습니다.
장점:
- 모든 유형의 배열을 복제할 수 있습니다.
- 복제된 배열과 원본 배열은 서로 독립적입니다.
단점:
- 매우 큰 배열의 경우에는 속도가 느릴 수 있습니다.
- 함수나 undefined 같은 특정 타입의 값은 복제되지 않습니다.
결론
배열을 복제하는 방법은 다양하며 각각의 장단점이 있습니다. 사용하는 상황에 맞게 가장 적합한 방법을 선택하여 배열을 복제하는 것이 좋습니다.