2016-05-17 5 views
6

Ich habe eine lodash Variable;Lodash map und return unique

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

, die Folgendes erzeugt;

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

Wie kann ich die lodash-Anweisung anpassen, so dass sie nur ein Array von eindeutigen Werten zurückgibt? z.B.

var username = _.map(data, 'usernames').uniq(); 
+1

hast du 'uniqBy' ausprobiert? '_.uniqBy (Daten, 'Benutzername')' –

+0

Ich wünschte, die Daten könnten mich das tun ... aber bei dieser Gelegenheit kann ich nicht. – MindVox

Antwort

24

vielerlei Hinsicht, aber uniq() kein Verfahren auf Array ist, es ist eine lodash Methode.

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

Oder:

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

(. Die zweite ist nicht getestet und möglicherweise falsch, aber es ist in der Nähe)

Wie im Kommentar erwähnt, je nachdem, was eigentlich Ihre Daten ist, Sie könnten dies alles in einem Schuss tun, ohne zuerst herauszuziehen, was auch immer usernames ist.

+0

Danke, obwohl ich etwas lodash specific erwähnt habe. Mir ist bewusst, dass uniq() lodash ist. – MindVox

+0

@KarlBateman \t Richtig, aber Sie versuchen, eine Lodash-Methode für ein Array aufzurufen. So funktioniert lodash nicht; Es modifiziert keine Prototypen. –

+0

Danke, tut mir leid, ja, das stimmt. – MindVox