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

JavaScript 배열에서 중복을 제거하고 고유 값만 추출하는 방법

JavaScript 배열에서 고유 값 얻기

JavaScript에서 배열에 중복된 값이 여러 개 포함되어 있을 때, Set 객체를 활용하면 간단하게 고유한 값만 추출할 수 있습니다. Set은 중복을 허용하지 않는 자료구조이므로, 배열을 Set으로 변환하는 것만으로 자동으로 중복이 제거됩니다.

아래 예제는 숫자와 문자열이 섞여 있는 배열에서 중복 값을 제거하는 전체 코드입니다.

예제 코드

<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>배열에서 고유 값 추출하기</title>
<style>
    body {
        font-family: "Segoe UI", Tahoma, Geneva, Verdana, sans-serif;
    }
    .result,
    .sample {
        font-size: 18px;
        font-weight: 500;
        color: rebeccapurple;
    }
    .result {
        color: red;
    }
</style>
</head>
<body>
<h1>배열에서 고유 값 가져오기</h1>
<div class="sample"></div>
<div class="result"></div>
<button class="Btn">클릭하세요</button>
<h3>위 버튼을 클릭하면 배열에서 중복 값이 제거됩니다</h3>
<script>
    let resultEle = document.querySelector(".result");
    let sampleEle = document.querySelector(".sample");
    let arr = [2, 3, 4, 2, 3, 4, "A", "A", "B", "B"];
    sampleEle.innerHTML = "arr = " + arr;
    document.querySelector(".Btn").addEventListener("click", () => {
        let set1 = new Set(arr);
        resultEle.innerHTML = "arr = " + [...set1] + "<br>";
    });
</script>
</body>
</html>

실행 결과

페이지를 처음 열면 원본 배열이 화면에 표시됩니다.

JavaScript 배열에서 중복을 제거하고 고유 값만 추출하는 방법

'클릭하세요' 버튼을 누르면 중복이 제거된 결과가 출력됩니다.

JavaScript 배열에서 중복을 제거하고 고유 값만 추출하는 방법

코드 동작 원리

핵심 로직은 단 두 줄입니다.

new Set(arr) — 배열을 Set 객체로 변환합니다. Set은 동일한 값을 하나만 저장하기 때문에 이 과정에서 중복 요소가 모두 사라집니다.

[...set1] — 스프레드 연산자(spread operator)를 사용해 Set을 다시 일반 배열로 변환합니다. Set은 반복 가능(iterable)한 객체이므로 스프레드 문법으로 손쉽게 배열화할 수 있습니다.

이 방법의 장점은 코드가 매우 간결하고, filterindexOf를 조합하는 기존 방식(O(n²))보다 성능이 뛰어나다는 점입니다. Set을 사용하는 방식은 대체로 O(n)의 시간 복잡도로 동작합니다.

또한 ES6 이상 환경이라면 한 줄로 더 간단하게 작성할 수도 있습니다.

const uniqueArr = [...new Set(arr)];

단, 주의할 점은 이 방법이 객체(object)처럼 참조 타입인 경우에는 같은 내용이라도 서로 다른 인스턴스는 별개의 값으로 취급한다는 것입니다. 원시 타입(숫자, 문자열, 불리언 등)의 중복 제거에는 가장 적합한 방법입니다.