
객체 배열에서 중복 항목 제거: 자세한 탐색
이 문서에서는 객체 배열을 사용할 때 직면하는 일반적인 문제인 중복 항목 제거에 대해 자세히 설명합니다. 우리의 목표는 이 작업을 달성하기 위한 최선의 방법에 대한 심층적인 이해를 제공하는 것입니다.
문제 설명
다음 개체를 고려하십시오.
1 2 3 4 5 | 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의 강력한 기능을 활용하여 다음과 같은 단일 라이너 솔루션을 사용할 수 있습니다.
1 2 3 4 5 | obj.arr = obj.arr.filter((value, index, self) =>
index === self.findIndex((t) => (
t.place === value.place && t.name === value.name
))
);
|
로그인 후 복사
일반 접근 방식
보다 다양한 솔루션을 얻으려면 다음을 고려하세요. 코드:
1 2 3 4 5 6 | const uniqueArray = obj.arr.filter((value, index) => {
const _value = JSON.stringify(value);
return index === obj.arr.findIndex(obj => {
return JSON.stringify(obj) === _value;
});
});
|
로그인 후 복사
속성 전략
대체 접근 방식은 개체의 속성을 비교하는 것입니다.
1 2 3 4 5 6 7 | 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!