programing

Lodash가 어레이에서 중복 제거

kingscode 2022. 12. 28. 21:57
반응형

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

반응형