Lodash supprime les doublons du tableau

Ce sont mes données:

[
    {
        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"    
    }
]

Avec Lodash, Comment puis-je supprimer des objets avec des clés d'identification en double? Quelque chose avec filtre, Carte et unique, mais pas tout à fait sûr.

Mon ensemble de données réel est beaucoup plus grand et a plus de clés, mais le concept devrait être le même.

129
demandé sur ntalbs 2015-07-31 10:10:58

3 réponses

_.uniq ne fonctionne plus pour la version actuelle car lodash 4.0.0 a ce changement de rupture . Donc, utilisez soit

_.uniqBy(data, function (e) {
  return e.id;
});

Ou

_.uniqBy(data, 'id');

Documentation: https://lodash.com/docs#uniqBy


Pour les anciennes versions de lodash(

En Supposant que les données doivent être uniques par id et vos données sont stockées dans data variable, vous pouvez utiliser uniq() la fonction comme ceci:

_.uniq(data, function (e) {
  return e.id;
});

, Ou simplement

_.uniq(data, 'id');
255
répondu ntalbs 2016-02-12 18:07:40

Vous pouvez utiliser la méthode lodash _.uniqavec, il est disponible dans la version actuelle de lodash 4.17.2.

Exemple:

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 }]

Plus d'infos: https://lodash.com/docs/#uniqWith

31
répondu zdrsoft 2016-11-18 11:33:27

Vous pouvez également utiliser unionBy pour 4.0.0 et versions ultérieures, comme suit: laissez uniques = _.unionBy(données, 'id')

0
répondu Himanshu Tanwar 2018-06-05 11:27:20