Computer >> 컴퓨터 >  >> 프로그래밍 >> JavaScript

JavaScript 배열에서 중복 데이터 제거하기 - Set 객체 활용 방법

중복 데이터가 포함된 배열 예시

자바스크립트에서 객체 배열을 다루다 보면 동일한 값이 여러 번 들어있는 경우가 많습니다. 예를 들어 다음과 같이 중복된 국적(nationality) 값이 포함된 레코드 배열이 있다고 가정해 보겠습니다.

var objectOfNationality =
    [
      { nationality: "Indian" },
      { nationality: "American" },
      { nationality: "Emirati" },
      { nationality: "Indian" },
      { nationality: "American" }
    ];

위 배열에는 'Indian'과 'American'이 각각 두 번씩 반복되어 있습니다. 이번 글에서는 이런 중복 레코드를 손쉽게 제거하고 필터링하는 방법을 알아보겠습니다.

Set()으로 중복 레코드 제거하기

배열에서 중복 값을 제거할 때 가장 간단하고 효율적인 방법은 자바스크립트의 Set() 객체를 활용하는 것입니다. Set은 고유한(unique) 값만 저장하는 자료구조이기 때문에, 이미 존재하는 값이 다시 추가되면 자동으로 무시됩니다.

다음은 Set을 이용해 중복 국적을 제거하는 전체 코드입니다.

var objectOfNationality =
    [
      { nationality: "Indian" },
      { nationality: "American" },
      { nationality: "Emirati" },
      { nationality: "Indian" },
      { nationality: "American" }
    ];
function removeOrFilterNationality(objectOfNationality) {
    return Array.from(new Set(objectOfNationality.map(tempObject => tempObject.nationality)));
}
console.log(removeOrFilterNationality(objectOfNationality));

코드 동작 원리

위 코드는 세 단계로 나누어 이해할 수 있습니다.

1단계: map() 메서드를 사용해 객체 배열에서 nationality 속성의 값만 추출하여 새로운 배열을 만듭니다.
2단계: 추출된 배열을 new Set()에 전달하여 중복 값을 자동으로 제거합니다.
3단계: Array.from()을 사용해 Set 객체를 다시 일반 배열 형태로 변환하여 반환합니다.

프로그램 실행 방법

Node.js 환경에서 위 프로그램을 실행하려면 터미널에서 다음 명령어를 입력합니다.

node fileName.js

여기서는 파일 이름을 demo228.js로 저장했다고 가정하겠습니다.

실행 결과

프로그램을 실행하면 아래와 같이 중복이 제거된 고유한 국적 값만 출력되는 것을 확인할 수 있습니다.

PS C:\Users\Amit\JavaScript-code> node demo228.js
[ 'Indian', 'American', 'Emirati' ]

이처럼 map(), new Set(), Array.from() 세 가지를 조합하면 별도의 반복문이나 필터 로직 없이도 한 줄의 코드로 배열 내 중복 데이터를 깔끔하게 정리할 수 있습니다. ES6부터 도입된 Set은 대량의 데이터에서도 빠른 성능을 보여주므로, 실무에서 중복 제거가 필요할 때 적극적으로 활용해 보시기 바랍니다.