객체형태의 값으로 이루어진 배열에서 중복값을 제거할려고 했지만, set을 사용 시 객체내의 값이 똑같더라도 다른 Object로 인식되어 중복 제거가 되지는 않는다.
제거하는 방법은 객체내의 값들로 특정 형태를 만들어서 중복 제거를 한다.
const obj = [
{id: 1, name: '홍길동'},
{id: 2, name: '김길동'},
{id: 3, name: '아무개'},
{id: 1, name: '장길동'}
]
const deduplication = [
...new Map(
obj.map((m) => [`${m.id}_${m.name}`, m]),
).values(),
];
코드를 사용하면 된다
처음에 map을 이용하여 중복 제거 하고 싶은 값을 모아서 키로 변환하고 value값에 원본 값을 넣은후 new Map을 통하여, 값은 키를 가지고 있는 것들을 제거한다.
그 후 스프레드([...])를 사용하여 map안에 있던 value값을 다시 배열안에 넣음으로써 중복 제거를 할 수 있다.
이런 방식을 제외하고도 여러가지 방식이 있지만 내가 사용 하기에는 이해하기 편했던 방식이라 정리하였다