2011-04-19 23 views
17

underscore.js में एक फ़ंक्शन की तलाश है जो 2 arrays ले जाएगा और अद्वितीय मानों की एक नई श्रृंखला वापस करेगा? _withoutunderscore.js - क्या कोई ऐसा फ़ंक्शन है जो दो सरणी के अंतर को एक सरणी बनाता है?

_.without([0, 1, 3, 9], [1, 3]); 

की तरह कुछ मैं => [0,9] चाहते हैं लौटे

ऐसा प्रतीत होता है _without के 2 आर्ग, एक सरणी मानों की सूची नहीं है। अगर कोई अंडरस्कोर विशिष्ट कार्य है जिसे मैं ढूंढ रहा हूं तो वहां कोई भी जानता है? या मैं एक exisitng सरणी ले सकता हूं और इसे कार्य अपेक्षाओं के मूल्यों के लिए गुप्त कर सकता हूं।

धन्यवाद,
~ सैन डिएगो में सी.के.

+0

संपादित जेफ के लिए धन्यवाद। टाइपो। – Hcabnettek

उत्तर

13

_.without.apply(_, [arr1].concat(arr2))

[[0, 1, 3, 9]].concat([1, 3])[[0, 1, 3, 9], 1, 3] है;

_.without.apply(_, [[0, 1, 3, 9], 1, 3])_.without([0, 1, 3, 9], 1, 3)

आप एक पूरी तरह से अच्छा _.without विधि मिल गया है है। तो बस एक सरणी को उन मानों की सूची में परिवर्तित करें जिन्हें आप किसी फ़ंक्शन में पास कर सकते हैं। यह _.difference समारोह आप देना चाहिए Function.prototype.apply

+0

दोनों समाधान सही हैं, हालांकि, मुझे लगता है कि फ़ंक्शन की आवश्यकता वाले तर्कों की शैली में रूपांतरण करना है। बहुत बढ़िया!!! – Hcabnettek

+3

यह बहिष्कृत है, _.difference – adriantoine

4
var result = _.reject([0, 1, 3, 9], function(num) { 
       return _.include([1, 3], num); 
      }); 
+0

कोई भी विवरण जो आपका स्निपेट कर रहा है? – kaiser

+0

@kaiser: 'अस्वीकार' एक सूची और एक फ़ंक्शन लेता है जो "सत्य परीक्षण" के रूप में कार्य करता है यह पूछने के लिए कि प्रत्येक आइटम को खारिज कर दिया जाना चाहिए या नहीं। इस मामले में यह कार्य यह जांचने के लिए निर्दिष्ट किया गया है कि दिया गया आइटम सूची [1, 3] 'में शामिल है या नहीं। यदि ऐसा है, तो यह 'सत्य' वापस कर देगा, और 'अस्वीकार' मूल्य को अस्वीकार कर देगा। शीर्ष स्तर पर, 'अस्वीकार' मूल सूची दी गई है और बिना किसी अस्वीकृत मूल्य के एक नई सूची लौटाएगी। –

40

के प्रयोजन के लिए आप क्या देख रहे हैं है:

_.difference([0, 1, 3, 9], [1, 3]); // => [0, 9] 
+1

का उपयोग करना चाहिए एक ऐसा फ़ंक्शन जिसे मैं नहीं देखता वह है ([0,1,3,9], [1,3,12]) के मामले में [0, 12]। मुझे लगता है कि "संयोजन" – grantwparks

+2

यह स्वीकार्य उत्तर होना चाहिए –

1

लो-डैश अंडरस्कोर बढ़ाया और यहाँ है कि तुम क्या जरूरत है: http://lodash.com/docs#xor

_ .xor

प्रदान की गई सरणी का सममित अंतर है जो एक सरणी बनाता है। http://en.wikipedia.org/wiki/Symmetric_difference देखें।

_.xor([1, 2, 3], [5, 2, 1, 4]); 
// → [3, 5, 4] 
संबंधित मुद्दे