1 | var unique = require('./unique');
|
2 | var filter = require('./filter');
|
3 | var contains = require('./contains');
|
4 |
|
5 |
|
6 | /**
|
7 | * Exclusive OR. Returns items that are present in a single array.
|
8 | * - like ptyhon's `symmetric_difference`
|
9 | */
|
10 | function xor(arr1, arr2) {
|
11 | arr1 = unique(arr1);
|
12 | arr2 = unique(arr2);
|
13 |
|
14 | var a1 = filter(arr1, function(item){
|
15 | return !contains(arr2, item);
|
16 | }),
|
17 | a2 = filter(arr2, function(item){
|
18 | return !contains(arr1, item);
|
19 | });
|
20 |
|
21 | return a1.concat(a2);
|
22 | }
|
23 |
|
24 | module.exports = xor;
|
25 |
|
26 |
|