OBJECT 배열 모델

객체/배열 설계 기준

객체는 속성 이름으로 값을 묶고 배열은 순서 있는 목록을 다룬다는 설명만으로는 부족하다. 실제 웹 코드에서는 중첩 데이터, 참조 복사, 얕은 복사, mutation, map/filter/reduce의 반환 규칙을 이해해야 상태 버그를 줄일 수 있다.

01

데이터 의미 선택

id로 찾을 단일 엔티티 묶음인지, 순서와 반복을 보존해야 하는 목록인지 구분한다.

객체와 배열은 조회 방식이 다르다
02

중첩 구조 확인

사용자, 주소, 주문 목록처럼 중첩된 객체와 배열의 변경 범위를 표시한다.

깊은 구조는 업데이트가 어려워진다
03

복사 방식 선택

spread와 slice가 얕은 복사라는 점을 이해하고 중첩 객체 참조를 확인한다.

겉만 새 객체여도 안쪽은 같을 수 있다
04

반복 메서드 사용

map은 변환, filter는 선택, reduce는 누적처럼 반환 의미에 맞게 고른다.

forEach는 새 배열을 반환하지 않는다
05

상태 업데이트 검증

React 상태처럼 변경 감지가 필요한 곳에서는 원본 mutation을 피하고 새 참조를 만든다.

push 후 같은 배열을 set하면 변화가 안 보일 수 있다
Object
이름 있는 속성 서로 다른 의미의 값을 key로 묶고 optional field를 표현한다.
없는 속성 처리와 기본값을 둔다
Array
순서 있는 목록 같은 종류의 항목을 순회, 정렬, 필터링할 때 적합하다.
index를 id처럼 쓰지 않는다
Shallow copy
겉 참조만 교체 spread는 1단계만 복사하므로 중첩 객체는 여전히 같은 참조다.
중첩 변경을 조심한다
Immutable update
변경 감지용 새 참조 상태 관리에서는 바뀐 경로의 객체와 배열을 새로 만든다.
원본 mutation을 피한다

데이터 확인

id 사용 목록 렌더링과 업데이트에서 index 대신 안정적인 id를 쓰는지 확인한다.
중첩 복사 중첩 객체를 수정할 때 필요한 단계까지 새 참조를 만드는지 본다.
메서드 선택 map/filter/reduce/forEach를 반환 목적에 맞게 사용했는지 확인한다.