Lodash가 어레이에서 중복 제거
데이터는 다음과 같습니다.
[
{
url: 'www.example.com/hello',
id: "22"
},
{
url: 'www.example.com/hello',
id: "22"
},
{
url: 'www.example.com/hello-how-are-you',
id: "23"
},
{
url: 'www.example.com/i-like-cats',
id: "24"
},
{
url: 'www.example.com/i-like-pie',
id: "25"
}
]
Lodash를 사용하면 ID 키가 중복된 개체를 어떻게 제거할 수 있습니까?필터, 지도, 그리고 독특하지만 확실하진 않아요.
실제 데이터 세트는 훨씬 크고 키가 더 많지만 개념은 같아야 합니다.
_.unique
버전 4.0.0에는 이러한 변경 사항이 있기 때문에 현재 버전의 Lodash에서는 더 이상 작동하지 않습니다.의 기능_.unique
에 분할되었다._.uniq
,_.sortedUniq
,_.sortedUniqBy
,그리고._.uniqBy
.
사용할 수 있습니다._.uniqBy
다음과 같습니다.
_.uniqBy(data, function (e) {
return e.id;
});
...혹은 다음과 같습니다.
_.uniqBy(data, 'id');
문서: https://lodash.com/docs#uniqBy
이전 버전의 Lodash(< 4.0.0)의 경우:
데이터가 각 객체의 고유화되어야 한다고 가정합니다.id
속성 및 데이터가 저장됩니다.data
변수에는 다음과 같은 함수를 사용할 수 있습니다.
_.unique(data, function (e) {
return e.id;
});
또는 다음과 같이 단순합니다.
_.uniq(data, 'id');
lodash 메서드 _.uniqWith는 현재 버전의 lodash 4.17.2에서 사용할 수 있습니다.
예를 들어:
var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 2 }];
_.uniqWith(objects, _.isEqual);
// => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]
상세정보 : https://lodash.com/docs/ #uniqWith
lodash 버전 4+에서는 다음과 같이 특정 속성별 또는 전체 개체별로 중복 개체를 제거할 수 있습니다.
var users = [
{id:1,name:'ted'},
{id:1,name:'ted'},
{id:1,name:'bob'},
{id:3,name:'sara'}
];
var uniqueUsersByID = _.uniqBy(users,'id'); //removed if had duplicate id
var uniqueUsers = _.uniqWith(users, _.isEqual);//removed complete duplicates
출처 : https://www.codegrepper.com/ ? search _ term = Lodash + remove + duplicates + from + array
또는 단순 배열의 경우 결합을 사용합니다.
_.union([1,2,3,3], [3,5])
// [1,2,3,5]
단순 배열의 경우 결합 방식을 사용할 수 있지만 다음을 사용할 수도 있습니다.
_.uniq([2, 1, 2]);
_.uniqBy()를 사용합니다.어레이의 중복이 없는 버전을 만듭니다.
이것은 4.0.0 버전부터 사용할 수 있는 새로운 방법입니다.
_.uniqBy(data, 'id');
또는
_.uniqBy(data, obj => obj.id);
4보다 이전 버전의 LODASH에서는 이 기능의 대부분이 동일한 방식으로 구현되지 않습니다.버전 4와는 반대로 _.uniq가 변경되었습니다.저는 개인적으로 몇 달 동안 프로젝트를 진행했습니다(V3 ->에서 V4로).
동일한 상황에서 실행 중이고 업데이트해야 할 기능이 많은 경우단계별로 작업을 수행할 수 있으며 전환이 완료되면 나중에 와서 수정할 수 있습니다.플랫폼 다운타임을 피하기 위해 사용한 방법은 다음과 같습니다.
/* LODASH Version 3 & 4 Compatibility Mode */
if ((_.VERSION).charAt(0) <= 3){ //Detect LODASH version 3 or 4.
//V3 or lower
_.uniq(data, true, 'id');
} else {
//V4 or Higher
_.uniqBy(data, 'id');
}
또한 대부분의 경우 lodash 문서를 참조하면 4보다 이전 버전에서 _.uniq의 이행을 두 가지 기능을 모두 사용할 수 있습니다.
_.uniqBy(데이터, 'id') 또는 _.unionBy(데이터, 'id')
둘 다 같은 결과를 가져올 것이다.저는 개인적으로 어떤 걸 고를지 추측하고 있었어요.마지막으로 이 것을 선택했습니다: _.uniqBy(데이터, 'id').
unionBy를 4.0.0 이상에 사용할 수도 있습니다.let uniques = _.unionBy(data, 'id')
언급URL : https://stackoverflow.com/questions/31740155/lodash-remove-duplicates-from-array
'programing' 카테고리의 다른 글
Python 클래스의 모든 속성 인쇄 (0) | 2022.12.28 |
---|---|
Java Collections Framework 구현에 대한 Big-O 요약 (0) | 2022.12.28 |
Spring 3.1 디폴트프로파일 (0) | 2022.12.28 |
웹 페이지 제목을 동적으로 변경하는 방법 (0) | 2022.12.28 |
어레이의 모든 요소를 Java의 특정 값으로 초기화하는 방법 (0) | 2022.12.28 |