객체형태의 값으로 이루어진 배열에서 중복값을 제거할려고 했지만, 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값을 다시 배열안에 넣음으로써 중복 제거를 할 수 있다.

 

이런 방식을 제외하고도 여러가지 방식이 있지만 내가 사용 하기에는 이해하기 편했던 방식이라 정리하였다