> 웹 프론트엔드 > JS 튜토리얼 > JavaScript 배열에서 중복 값을 효율적으로 제거하는 방법은 무엇입니까?

JavaScript 배열에서 중복 값을 효율적으로 제거하는 방법은 무엇입니까?

Mary-Kate Olsen
풀어 주다: 2024-12-20 13:00:26
원래의
701명이 탐색했습니다.

How to Efficiently Remove Duplicate Values from a JavaScript Array?

JS 배열에서 중복 값 제거

JavaScript 배열에서 중복 값을 제거하는 것은 일반적인 작업일 수 있으며, 특히 중복 항목이 포함될 수 있는 데이터로 작업할 때 더욱 그렇습니다. 데이터의 특성과 성능 고려 사항에 따라 이를 효과적으로 달성하기 위한 여러 접근 방식이 있습니다.

Set 생성자 및 스프레드 구문 사용

이 방법은 내장된 Set 생성자와 스프레드를 활용합니다. 원래 배열의 고유한 값만 포함하는 새 배열을 생성하는 구문:

const uniq = [...new Set(array)];
로그인 후 복사

"스마트"하지만 순진함 way

이 접근 방식은 filter() 메서드를 사용하여 배열을 반복하고 각 요소의 첫 번째 발생이 배열 내 현재 위치와 일치하는지 확인합니다. 위치가 일치하지 않는 요소는 중복으로 간주됩니다.

const uniqueArray = a.filter((item, pos) => a.indexOf(item) === pos);
로그인 후 복사

해시테이블을 활용하세요

해시테이블은 키-값 쌍을 사용하여 중복 요소를 감지하는 효율적인 방법을 제공합니다. 이 접근 방식에서는 각 요소가 해시 테이블에 추가되고 요소의 존재 여부가 즉시 확인됩니다.

function uniq(a) {
  const seen = {};
  return a.filter((item) => {
    return seen.hasOwnProperty(item) ? false : (seen[item] = true);
  });
}
로그인 후 복사

두 세계의 최고

이전 두 요소의 이점을 결합합니다. 접근 방식에서 이 솔루션은 기본 값에 해시테이블을 활용하고 객체에 대해 선형 검색을 활용합니다.

function uniq(a) {
  const prims = { boolean: {}, number: {}, string: {} }, objs = [];

  return a.filter((item) => {
    const type = typeof item;
    if (type in prims) return prims[type].hasOwnProperty(item) ? false : (prims[type][item] = true);
    else return objs.indexOf(item) >= 0 ? false : objs.push(item);
  });
}
로그인 후 복사

정렬 | uniq

중복 항목을 제거하기 전에 배열을 정렬하면 프로세스가 단순화될 수 있습니다.

function uniq(a) {
  return a.sort().filter((item, pos, ary) => !pos || item != ary[pos - 1]);
}
로그인 후 복사

Unique by...

특정 기준에 따라 중복 항목을 제거해야 하는 경우, 객체의 속성과 같은 경우 uniqBy() 메서드에 콜백 함수를 제공할 수 있습니다. 방법:

function uniqBy(a, key) {
  const seen = {};
  return a.filter((item) => {
    const k = key(item);
    return seen.hasOwnProperty(k) ? false : (seen[k] = true);
  });
}
로그인 후 복사

첫 번째 또는 마지막?

중복 개체의 첫 번째 또는 마지막 항목만 유지하려면 Set 또는 Map 데이터 구조를 사용할 수 있습니다.

function uniqByKeepFirst(a, key) {
  const seen = new Set();
  return a.filter((item) => {
    const k = key(item);
    return seen.has(k) ? false : seen.add(k);
  });
}

function uniqByKeepLast(a, key) {
  return [...new Map(a.map((x) => [key(x), x])).values()];
}
로그인 후 복사

위 내용은 JavaScript 배열에서 중복 값을 효율적으로 제거하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿