2016-05-17 18 views
6

Ho una variabile di lodash;Mappa di Lodash e resa unica

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

che produce quanto segue;

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

Come è possibile regolare l'istruzione lodash in modo che restituisca solo una matrice di valori univoci? per esempio.

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

hai provato 'uniqBy'? '_.uniqBy (data, 'username')' –

+0

Vorrei che i dati potessero permettermi di farlo ... ma in questa occasione, non posso. – MindVox

risposta

24

molti modi, ma uniq() non è un metodo su array, si tratta di un metodo lodash.

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

Oppure:

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

(. La seconda non è testato e forse sbagliato, ma è vicino)

Come accennato nel commento, a seconda di ciò che i vostri dati effettivamente è, puoi fare tutto questo in un colpo solo senza prima estrarre quello che è usernames.

+0

Grazie, anche se ho menzionato qualcosa di specifico di lodash. Sono a conoscenza del fatto che uniq() è lodash. – MindVox

+0

@KarlBateman \t Giusto, ma stai provando a chiamare un metodo lodash su un array. Non è così che lavora il lodash; non modifica i prototipi. –

+0

Grazie, scusa, sì, è vero. – MindVox