반응형
map() 메서드는 원본 배열의 각 요소를 변환하여 새로운 배열을 생성합니다. 이때, 원본 배열의 요소가 객체인 경우, map() 메서드로 생성된 새로운 배열의 각 요소는 원본 배열의 객체를 참조하게 됩니다. 따라서 새로운 배열의 객체를 수정하면 원본 배열의 해당 객체도 영향을 받습니다.
const originalArray = [{ id: 1, value: 'a' }, { id: 2, value: 'b' }];
const newArray = originalArray.map(item => item);
// 새로운 배열의 첫 번째 객체 수정
newArray[0].value = 'z';
console.log(originalArray[0].value); // 출력: 'z'
위 코드에서 originalArray와 newArray는 서로 다른 배열이지만, 각 배열의 요소인 객체는 동일한 참조를 공유합니다. 따라서 newArray[0].value를 변경하면 originalArray[0].value도 함께 변경됩니다.
이러한 동작은 JavaScript에서 객체가 참조 타입이기 때문에 발생합니다. 객체를 복사할 때는 얕은 복사와 깊은 복사의 개념을 이해하고, 필요한 경우 깊은 복사를 수행하여 원본 객체와의 참조 관계를 끊어야 합니다.
자세한 내용은 JavaScript의 얕은 복사와 깊은 복사를 참고하시기 바랍니다.
반응형
'TYPESCRIPT' 카테고리의 다른 글
우아한 타입스크립트 목차 (0) | 2024.09.10 |
---|---|
타입스크립트에서 구조적 타이핑으로 인해 유니온 타입의 논리가 조금 이상한데 구조적 타이핑, 덕 타아핑의 한계로 인해 어쩔 수 없는 것인가요? (0) | 2024.08.26 |
타입스크립트의 고급 타이핑 기능들이 어떻게 보면 더 발전된 언어의 기능이라고 볼 수도 있지 않나요? 단순히 동적언어인 자바스크립트에 타이핑을 하기 위해 추가된 기능들인 건가요? (1) | 2024.08.26 |
타입스크립트의 타입 시스템은 타입에 대해 동작하는 순수 함수형 언어로 생각할 수 있습니다. (0) | 2024.08.26 |