Add set operations. Union, intersect and difference

This commit is contained in:
Darren Scerri
2017-12-13 23:40:27 +01:00
parent 2674273efc
commit a4a7eb275a
5 changed files with 54 additions and 18 deletions

View File

@ -0,0 +1,8 @@
### Array difference (complement)
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); return a.filter(x => !s.has(x)); }
// difference([1,2,3], [1,2]) -> [3]
```

View File

@ -0,0 +1,8 @@
### Array intersection (Common values between two arrays)
Create a `Set` from `b`, then use `Array.filter()` on `a` to only keep values contained in `b`.
```js
const intersection = (a, b) => { const s = new Set(b); return a.filter(x => s.has(x)); }
// intersection([1,2,3], [4,3,2]) -> [2,3]
```

8
snippets/array-union.md Normal file
View File

@ -0,0 +1,8 @@
### Array union
Create a `Set` with all values of `a` and `b` and convert to an array.
```js
const union = (a, b) => Array.from(new Set([...a, ...b]))
// union([1,2,3], [4,3,2]) -> [1,2,3,4]
```

View File

@ -1,8 +0,0 @@
### Difference between arrays
Use `filter()` to remove values that are part of `values`, determined using `includes()`.
```js
const difference = (arr, values) => arr.filter(v => !values.includes(v));
// difference([1,2,3], [1,2]) -> [3]
```