1. 불변성이란
- 기존 데이터를 직접 변경하지 않고 새로운 값을 생성하는 방식
- 원본 데이터가 변경되지 않아 예측 가능한 코드 유지 가능
2. 배열의 불변성 유지하는 방법
✅ 1) 깊은 복사 (Deep Copy)
- 기존 배열을 변경하지 않고 새로운 배열을 생성
...(전개 연산자) 사용
✅ 2) 요소 추가
- 기존 배열을 변경하지 않고 새로운 배열을 생성
let appendList = [...list, 4]; // 뒤에 추가
let prependList = [0, ...list]; // 앞에 추가
console.log("appendList", appendList); // [1, 2, 3, 4]
console.log("prependList", prependList); // [0, 1, 2, 3]✅ 3) 요소 찾기 (filter)
- 특정 값을 찾아서 새로운 배열로 반환
let searchList = list.filter((n) => n == 2);
console.log("searchList", searchList); // [2]✅ 4) 요소 삭제 (filter)
- 특정 요소만 제외한 새로운 배열 생성
let deleteList = list.filter((n) => n != 2);
console.log("deleteList", deleteList); // [1, 3]✅ 5) 요소 수정 (map)
- 특정 요소를 찾아 변경한 새로운 배열 생성
let updateList = list.map((n) => {
if (n == 2) {
return n * 10;
} else {
return n;
}
});
console.log("updateList", updateList); // [1, 20, 3]💡 한 줄로 줄이기 (삼항 연산자 사용)
let updateList = list.map((n) => (n == 2 ? n * 10 : n));불변성을 유지하는 이유
✅ 원본 데이터를 유지하면서 새로운 상태를 쉽게 관리할 수 있음
✅ 리액트(React)와 같은 라이브러리에서 상태 변경 감지에 유리
✅ 디버깅이 쉬워지고, 사이드 이펙트 방지
Share article