[javascript] 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 키가있는 객체를 어떻게 제거 할 수 있습니까? 필터, 맵 및 고유 한 항목이지만 확실하지 않습니다.

내 실제 데이터 세트는 훨씬 크고 키가 더 많지만 개념은 동일해야합니다.



답변

_.uniquelodash 4.0.0에 이러한 주요 변경 사항이 있으므로 현재 버전에서 더 이상 작동하지 않습니다. . 기능적으로 _.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 () 함수를 사용할 수 있습니다 .

_.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


답변

또는 단순히 배열을 사용하려면 union을 사용하십시오 .

_.union([1,2,3,3], [3,5])

// [1,2,3,5]


답변

_.uniqBy ()를 사용 하십시오 . 중복없는 버전의 배열을 만듭니다.

이것은 새로운 방법이며 4.0.0 버전에서 사용할 수 있습니다.

_.uniqBy(data, 'id');

또는

_.uniqBy(data, obj => obj.id);


답변

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


답변

다음과 같이 unionBy 를 4.0.0 이상 에 사용할 수도 있습니다 . let uniques = _.unionBy (data, ‘id’)


답변

간단한 배열의 경우 공용체 접근 방식이 있지만 다음을 사용할 수도 있습니다.

_.uniq([2, 1, 2]);