2016-05-17 14 views
6

लौटाएं मेरे पास एक लॉसैश वैरिएबल है;लोडाश मानचित्र और अद्वितीय

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

जो निम्न का उत्पादन करता है;

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

मैं लॉनाश स्टेटमेंट को कैसे समायोजित कर सकता हूं ताकि यह केवल अद्वितीय मूल्यों की एक सरणी लौटा सके? जैसे

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

क्या आपने 'uniqBy' की कोशिश की है? '_.uniqBy (डेटा, 'उपयोगकर्ता नाम')' –

+0

मेरी इच्छा है कि डेटा मुझे ऐसा करने दे सके ... लेकिन इस अवसर पर, मैं नहीं कर सकता। – MindVox

उत्तर

24

कई तरीकों से, लेकिन uniq() सरणी पर एक विधि नहीं है, यह एक लॉसैश विधि है।

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

या:

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

(। दूसरा अपरीक्षित और संभवतः गलत है, लेकिन यह करीब है)

टिप्पणी के रूप में उल्लेख किया है, क्या अपने डेटा वास्तव में है पर निर्भर करता है, आप यह सब एक शॉट में कर सकते हैं बिना किसी भी usernames को खींचने के बिना।

+0

धन्यवाद, हालांकि मैंने कुछ लॉकैश विशिष्ट का उल्लेख किया है। मैं uniq() lodash होने के बारे में पता हूँ। – MindVox

+0

@KarlBateman \t ठीक है, लेकिन आप एक सरणी पर एक lodash विधि कॉल करने की कोशिश कर रहे हैं। ऐसा नहीं है कि लॉनाश कैसे काम करता है; यह प्रोटोटाइप को संशोधित नहीं करता है। –

+0

धन्यवाद, क्षमा करें हाँ यह सही है। – MindVox

संबंधित मुद्दे