web-dev-qa-db-fra.com

Carte de Lodash et retour unique

J'ai une variable lodash;

var usernames = _.map(data, 'usernames');

ce qui produit ce qui suit;

[
    "joebloggs",
    "joebloggs",
    "simongarfunkel",
    "chrispine",
    "billgates",
    "billgates"
]

Comment pourrais-je ajuster l'instruction lodash afin qu'elle ne renvoie qu'un tableau de valeurs uniques? par exemple.

var username = _.map(data, 'usernames').uniq();
15
MindVox

À bien des égards, mais uniq() n'est pas une méthode sur un tableau, c'est une méthode lodash.

_.uniq(_.map(data, 'usernames'))

Ou:

_.chain(data).map('usernames').uniq().value()

(Le second n'est pas testé et peut-être faux, mais il est proche.)

Comme mentionné dans le commentaire, en fonction de ce que vos données réellement is, vous pouvez le faire en une seule fois sans retirer tout ce que usernames est.

48
Dave Newton

Vous pouvez également utiliser la fonction uniqBy qui accepte également l'itération invoquée pour chaque élément du tableau. Il accepte deux arguments comme ci-dessous, où id est le paramètre itératif.

_.uniqBy(array, 'id')
0
Alex Trn