반응형

안녕하세요 ~

얼마전 실무에서 사용할 일이 있어 알아보게되었던 부분인데요 ,,, 

객체 내부 Value 중복제거를 알아보겠습니다.

 

 

우선 아래와 같이 Arr안에 같은 키 값을 가진 여러 객체가 있다고 가정해보겠습니다.

 

let rawArr = [
    {
        id : 1,
        name : "hi"
    },
    {
        id : 1,
        name : "A"
    },
    {
        id : 2,
        name : "B"
    },
    {
        id : 2,
        name : "B"
    },
    {
        id : 3,
        name : "hi"
    }
]

 

 

중복으로 들어가 있는 id를 가진 객체를 제거하고싶었습니다.

방법은 여러가지겠지만 ES6문법으로 알아보겠습니다.

 

 

/**
 * 1. reduce some 
 */
const unique_user = rawArr.reduce((prev, now) => {
    if (!prev.some(obj => obj.id === now.id )) prev.push(now);
        return prev;
  }, []);
  
  
/**
 * 2. filter  - 2.1 find
 *            - 2.2 some
 */
let retArr = []
rawArr.filter((origin, index) => {
            // if(!retArr.find((_retData, _retIndex) => origin.id === _retData.id && index !== _retIndex)) retArr.push(origin)
            if(!retArr.some((_retData, _retIndex) => origin.id === _retData.id && index !== _retIndex)) retArr.push(origin)
    }
)

 

1번은 reduce 와 some 을 이용

2번은 filter 와 find, some 을 이용했습니다.

 

아래와 같이 중복제거가 되었습니다.

유용하게 사용하세요 감사합니다.

+ Recent posts