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

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

DDD
풀어 주다: 2024-12-21 19:53:12
원래의
217명이 탐색했습니다.

How Can I Efficiently Remove Duplicate Objects from an Array in JavaScript?

객체 배열에서 중복 항목 제거: 자세한 탐색

이 문서에서는 객체 배열을 사용할 때 직면하는 일반적인 문제인 중복 항목 제거에 대해 자세히 설명합니다. 우리의 목표는 이 작업을 달성하기 위한 최선의 방법에 대한 심층적인 이해를 제공하는 것입니다.

문제 설명

다음 개체를 고려하십시오.

obj = {};
obj.arr = new Array();
obj.arr.push({place: "here", name: "stuff"});
obj.arr.push({place: "there", name: "morestuff"});
obj.arr.push({place: "there", name: "morestuff"});
로그인 후 복사

우리의 목표는 obj.arr에서 중복된 개체를 제거하여 고유한 개체만 포함하는 것입니다. elements.

ES6 Magic

ES6의 강력한 기능을 활용하여 다음과 같은 단일 라이너 솔루션을 사용할 수 있습니다.

obj.arr = obj.arr.filter((value, index, self) =>
  index === self.findIndex((t) => (
    t.place === value.place && t.name === value.name
  ))
);
로그인 후 복사

일반 접근 방식

보다 다양한 솔루션을 얻으려면 다음을 고려하세요. 코드:

const uniqueArray = obj.arr.filter((value, index) => {
  const _value = JSON.stringify(value);
  return index === obj.arr.findIndex(obj => {
    return JSON.stringify(obj) === _value;
  });
});
로그인 후 복사

속성 전략

대체 접근 방식은 개체의 속성을 비교하는 것입니다.

const isPropValuesEqual = (subject, target, propNames) =>
  propNames.every(propName => subject[propName] === target[propName]);

const getUniqueItemsByProperties = (items, propNames) => 
  items.filter((item, index, array) =>
    index === array.findIndex(foundItem => isPropValuesEqual(foundItem, item, propNames))
  );
로그인 후 복사

설명

제공되는 솔루션은 다음을 활용합니다. 개념:

  • 필터: 지정된 조건을 충족하는 배열 요소를 선택합니다.
  • findIndex: 조건을 만족하는 배열.
  • 속성 비교: 두 개체가 지정된 속성 집합에 대해 동일한 값을 갖는지 확인합니다.

이러한 전략을 사용하면 배열에서 중복 개체를 효과적으로 제거하여 각 요소가 고유하도록 할 수 있습니다.

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

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