Added symmetric difference as its own snippet, resolve #168
This commit is contained in:
@ -3,14 +3,6 @@
|
||||
Create a `Set` from `b`, then use `Array.filter()` on `a` to only keep values not contained in `b`.
|
||||
|
||||
```js
|
||||
const difference = (a, b) => { const s = new Set(b); a.filter(x => !s.has(x)); };
|
||||
const difference = (a, b) => { const s = new Set(b); return a.filter(x => !s.has(x)); };
|
||||
// difference([1,2,3], [1,2,4]) -> [3]
|
||||
```
|
||||
|
||||
This function can also be used to generate the symmetric difference or disjunctive union by swapping the
|
||||
arrays and combining the results.
|
||||
|
||||
```js
|
||||
const symmetricDifference = (a, b) => [...difference(a,b), ...difference(b,a)];
|
||||
// difference([1,2,3], [1,2,4]) -> [3,4]
|
||||
```
|
||||
|
||||
11
snippets/array-symmetric-difference.md
Normal file
11
snippets/array-symmetric-difference.md
Normal file
@ -0,0 +1,11 @@
|
||||
### Array symmetric difference
|
||||
|
||||
Create a `Set` from each array, then use `Array.filter()` on each of them to only keep values not contained in the other.
|
||||
|
||||
```js
|
||||
const symmetricDifference = (a, b) => {
|
||||
const sA = new Set(a), sB = new Set(b);
|
||||
return [...a.filter(x => !sB.has(x)), ...b.filter(x => !sA.has(x))];
|
||||
}
|
||||
// symmetricDifference([1,2,3], [1,2,4]) -> [3,4]
|
||||
```
|
||||
Reference in New Issue
Block a user