> 웹 프론트엔드 > JS 튜토리얼 > JavaScript 배열에서 중복 값을 효율적으로 제거하려면 어떻게 해야 합니까?

JavaScript 배열에서 중복 값을 효율적으로 제거하려면 어떻게 해야 합니까?

DDD
풀어 주다: 2025-01-03 12:13:41
원래의
639명이 탐색했습니다.

How Can I Efficiently Remove Duplicate Values from JavaScript Arrays?

JavaScript의 배열에서 중복 값 제거

중복 항목이 포함될 수 있고 다음 항목만으로 새 배열을 생성해야 하는 배열을 다루고 있습니까? 독특한 가치는? 다음은 이 일반적인 문제를 해결하기 위한 다양한 접근 방식이 포함된 포괄적인 가이드입니다.

TL;DR: ES6 Set and Spread 구문 사용

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

"스마트" 그러나 순진한 접근법(2차 Time)

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

구조를 위한 해시 테이블(선형 시간)

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

두 세계의 최고(선형) 시간)

const 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);
    }
  });
};
로그인 후 복사

정렬 및 필터링(선형 시간)

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

키별 고유(기준에 따른 필터링) 콜백)

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

첫 번째 또는 마지막 발생 보존(Set 또는 Map 사용)

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

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

배열 유형에 맞는 접근 방식 선택 및 성능 요구 사항.

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

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