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 un filtre, une carte et un objet unique, mais pas tout à fait sûr.
Mon jeu de données réel est beaucoup plus volumineux et contient plus de clés, mais le concept devrait être le même.
_.uniq
ne fonctionne plus pour la version actuelle car lodash 4.0.0 a ce changement radical . Alors 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 (<4.0.0)
En supposant que les données doivent être uniques de id
et que vos données sont stockées dans la variable data
, vous pouvez utiliser uniq () function comme ceci:
_.uniq(data, function (e) {
return e.id;
});
Ou simplement
_.uniq(data, 'id');
Vous pouvez utiliser la méthode lodash _.uniqWith, elle 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
Utilisez simplement _.uniqBy () . Il crée une version sans doublons d'un tableau.
C'est une nouvelle façon et disponible à partir de la version 4.0.0.
_.uniqBy(data, 'id');
ou
_.uniqBy(data, obj => obj.id);
Ou simplement, utilisez union , pour un tableau simple.
Vous pouvez également utiliser unionBy pour la version 4.0.0 et ultérieure, comme suit: Let uniques = _.unionBy (data, 'id')