How to find the difference between two arrays using lodash / underscore in nodejs

I have two arrays of arrays and am trying to find the difference.

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 ]]; 

How would I find:

 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 ]]; 

I tried to emphasize:

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

But that will not work.

I also tried lodash:

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

but it doesnโ€™t work either.

What am I doing wrong here?

+5
source share
1 answer

Use _.differenceWith and pass a comparator that compares two arrays, for example:

 _.differenceWith(a, b, _.isEqual); 
+21
source

All Articles