2016-08-10 13 views
5

मेरे पास सरणी के दो सरणी हैं और मैं अंतर खोजने की कोशिश कर रहा हूं।nodejs में lodash/underscore का उपयोग करके दो सरणी के बीच अंतर कैसे प्राप्त करें

var a = [[ 11, 24, 28, 38, 42, 44 ], 
    [ 7, 19, 21, 22, 29, 38 ], 
    [ 2, 21, 27, 30, 33, 40 ], 
    [ 6, 11, 12, 21, 34, 48 ], 
    [ 1, 10, 17, 31, 35, 40 ], 
    [ 1, 18, 26, 33, 36, 45 ], 
    [ 15, 21, 22, 24, 38, 46 ], 
    [ 5, 17, 21, 27, 29, 41 ], 
    [ 3, 7, 12, 16, 20, 28 ], 
    [ 9, 12, 13, 18, 30, 37 ], 
    [ 3, 19, 21, 31, 33, 46 ], 
    [ 6, 11, 16, 18, 20, 34 ], 
    [ 1, 3, 11, 13, 24, 28 ], 
    [ 12, 13, 16, 40, 42, 46 ], 
    [ 1, 3, 5, 36, 37, 41 ], 
    [ 14, 15, 23, 24, 26, 31 ], 
    [ 7, 13, 14, 15, 27, 28 ]]; 

var b = [[ 4, 7, 9, 21, 31, 36 ], 
    [ 2, 5, 6, 12, 15, 21 ], 
    [ 4, 7, 8, 15, 38, 41 ], 
    [ 11, 24, 28, 38, 42, 44 ], 
    [ 7, 19, 21, 22, 29, 38 ]]; 

मैं कैसे पता होगा:

c = [[ 2, 21, 27, 30, 33, 40 ], 
    [ 6, 11, 12, 21, 34, 48 ], 
    [ 1, 10, 17, 31, 35, 40 ], 
    [ 1, 18, 26, 33, 36, 45 ], 
    [ 15, 21, 22, 24, 38, 46 ], 
    [ 5, 17, 21, 27, 29, 41 ], 
    [ 3, 7, 12, 16, 20, 28 ], 
    [ 9, 12, 13, 18, 30, 37 ], 
    [ 3, 19, 21, 31, 33, 46 ], 
    [ 6, 11, 16, 18, 20, 34 ], 
    [ 1, 3, 11, 13, 24, 28 ], 
    [ 12, 13, 16, 40, 42, 46 ], 
    [ 1, 3, 5, 36, 37, 41 ], 
    [ 14, 15, 23, 24, 26, 31 ], 
    [ 7, 13, 14, 15, 27, 28 ]]; 

मैं कोशिश की थी अंडरस्कोर:

_ = require('underscore'); 
_.difference(a,b); 

लेकिन यह काम नहीं करता।

मैं भी lodash की कोशिश की:

_ = require('lodash'); 
_.differenceBy(a,b); 

लेकिन यह या तो काम नहीं करता।

मैं यहाँ क्या गलत कर रहा हूं?

+0

आप ठीक ढंग से अंडरस्कोर/lodash स्थापित किया है? क्या आपने जांच की है कि वे लोड किए गए थे? – Roysh

+0

** हाँ ** मैंने यह किया है कि –

+0

क्या आपने 'चौराहे' का उपयोग करने का प्रयास किया है? – Roysh

उत्तर

21

उपयोग _.differenceWith, और एक तुलनित्र जो दो सरणियों तुलना, के रूप में पारित:

_.differenceWith(a, b, _.isEqual); 
+0

मुझे यह नोट करना है कि तर्कों का क्रम '_.differenceBy' और' _.difference' के लिए मायने रखता है। '_.differenceBy' (lodash) के लिए प्रलेखन में, यह बताता है: "परिणाम मानों का क्रम और संदर्भ पहली सरणी द्वारा निर्धारित किया जाता है।" कुछ परीक्षणों के बाद मुझे एहसास हुआ कि परिणामी सरणी में दूसरी सरणी से मूल्य नहीं होने पर दूसरे सरणी से मूल्य नहीं थे। दस्तावेज में '_.difference' के लिए उदाहरण खराब विकल्प की तरह लगता है, '_.difference ([2, 1], [2, 3]); // रिटर्न [1] '। यह मुझे आश्चर्यचकित कर रहा है कि आपको '[1, 3]' कैसे मिलेगा यदि आपके सरणी ईक लंबाई हैं, जो मुझे चाहिए। – steezeburger

+0

मुझे एक ही समस्या थी। उस स्थिति में (एकल-स्तर के सरणी के लिए, इसलिए 'साथ' प्रकारों से परहेज करें), आप इसे '_.difference (_। संघ (ए, बी), _.intersection (ए, बी) द्वारा कर सकते हैं)' – dsl101

+1

और मैंने अभी भी '_.xor()' की खोज की, जो मुझे लगता है कि बहुत साफ है :)। https://lodash.com/docs/4.17.4#xor – dsl101

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