2013-04-08 8 views
34

पर (_.contains) शामिल हैं, मैं बस जावास्क्रिप्ट के साथ शुरू कर रहा हूं और अंडरस्कोर लाइब्रेरी का उपयोग कर रहा हूं। मुझे लगता है कि उनके पास सभी प्रकार के उपयोगिता फ़ंक्शन हैं, जैसे _.contains। क्या इस काम को वस्तुओं पर बनाने का कोई तरीका है?अंडरस्कोर में ऑब्जेक्ट प्रकार

var indexes = [ {'id': 1, 'name': 'jake' }, {'id':4, 'name': 'jenny'}, {'id': 9, 'name': 'nick'}, {'id': 1, 'name': 'jake' }, {'id':4, 'name': 'jenny'} ]; 

if (_.contains(indexes, {'id':1, 'name': 'jake'})) { 
    console.log("contains"); 
} 

उनके द्वारा दिखाए जाने वाले अधिकांश उदाहरणों में तारों या संख्याओं के साथ सरल सरणी होती है। मैं सोच रहा था कि मैं अपने उपयोगिता कार्यों जैसे _.contains के लिए उपयोग करने के लिए क्या कर सकता हूं। धन्यवाद।

उत्तर

58

contains=== के साथ तुलनीय होने के लिए जो वस्तुओं के विभिन्न उदाहरणों के साथ काम नहीं करेगा मूल्यों की आवश्यकता है।

उदाहरण के लिए यदि आप उस सटीक वस्तु को पारित करते हैं जो आप खोज रहे हैं तो यह काम करेगा, जो बहुत उपयोगी नहीं है।

if (_.contains(indexes, indexes[0])) { 

आप तथापि where या findWhere उपयोग कर सकते हैं।

if (_.findWhere(indexes, {'id':1, 'name': 'jake'})) { 

findWhere अंडरस्कोर 1.4.4 में इसलिए यदि आप यह नहीं है, आप where उपयोग कर सकते हैं नया है।

if (_.where(indexes, {'id':1, 'name': 'jake'}).length > 0) { 
+0

धन्यवाद, ढूंढें मेरे लिए कहां काम करता है –

12

आप वास्तव में इसके लिए _.where का उपयोग करना चाहते हैं।

var indexes = [ {'id': 1, 'name': 'jake' }, {'id':4, 'name': 'jenny'}, {'id': 9, 'name': 'nick'}, {'id': 1, 'name': 'jake' }, {'id':4, 'name': 'jenny'} ]; 

if (_.where(indexes, {'id':1, 'name': 'jake'}).length) { 
    console.log("contains"); 
} 
+0

आप वास्तव में 'करने के लिए करता है, तो (_। जहां (/*...*/)। लंबाई)', के रूप में '_.where' हमेशा एक ऑब्जेक्ट आवश्यकता होगी। – cmptrgeekken

+0

_.findWhere() एक ऑब्जेक्ट देता है- _.where() एक सरणी देता है- लेकिन मैंने "। लम्बाई" – mike

+0

हाँ भूल गए :) मुझे नहीं पता था कि जब तक मैंने जवाब दिया, तब तक मैं "लम्बाई" भूल गया। मेरा उत्तर अपडेट किया गया – mike

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