Add set operations. Union, intersect and difference
This commit is contained in:
40
README.md
40
README.md
@ -10,6 +10,9 @@
|
|||||||
## Contents
|
## Contents
|
||||||
|
|
||||||
* [Anagrams of string (with duplicates)](#anagrams-of-string-with-duplicates)
|
* [Anagrams of string (with duplicates)](#anagrams-of-string-with-duplicates)
|
||||||
|
* [Array difference](#array-difference)
|
||||||
|
* [Array intersection](#array-intersection)
|
||||||
|
* [Array union](#array-union)
|
||||||
* [Average of array of numbers](#average-of-array-of-numbers)
|
* [Average of array of numbers](#average-of-array-of-numbers)
|
||||||
* [Bottom visible](#bottom-visible)
|
* [Bottom visible](#bottom-visible)
|
||||||
* [Capitalize first letter of every word](#capitalize-first-letter-of-every-word)
|
* [Capitalize first letter of every word](#capitalize-first-letter-of-every-word)
|
||||||
@ -21,7 +24,6 @@
|
|||||||
* [Current URL](#current-url)
|
* [Current URL](#current-url)
|
||||||
* [Curry](#curry)
|
* [Curry](#curry)
|
||||||
* [Deep flatten array](#deep-flatten-array)
|
* [Deep flatten array](#deep-flatten-array)
|
||||||
* [Difference between arrays](#difference-between-arrays)
|
|
||||||
* [Distance between two points](#distance-between-two-points)
|
* [Distance between two points](#distance-between-two-points)
|
||||||
* [Divisible by number](#divisible-by-number)
|
* [Divisible by number](#divisible-by-number)
|
||||||
* [Escape regular expression](#escape-regular-expression)
|
* [Escape regular expression](#escape-regular-expression)
|
||||||
@ -85,6 +87,33 @@ const anagrams = str => {
|
|||||||
// anagrams('abc') -> ['abc','acb','bac','bca','cab','cba']
|
// anagrams('abc') -> ['abc','acb','bac','bca','cab','cba']
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### 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]
|
||||||
|
```
|
||||||
|
|
||||||
|
### 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]
|
||||||
|
```
|
||||||
|
|
||||||
|
### 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]
|
||||||
|
```
|
||||||
|
|
||||||
### Average of array of numbers
|
### Average of array of numbers
|
||||||
|
|
||||||
Use `Array.reduce()` to add each value to an accumulator, initialized with a value of `0`, divide by the `length` of the array.
|
Use `Array.reduce()` to add each value to an accumulator, initialized with a value of `0`, divide by the `length` of the array.
|
||||||
@ -211,15 +240,6 @@ const deepFlatten = arr =>
|
|||||||
// deepFlatten([1,[2],[[3],4],5]) -> [1,2,3,4,5]
|
// deepFlatten([1,[2],[[3],4],5]) -> [1,2,3,4,5]
|
||||||
```
|
```
|
||||||
|
|
||||||
### 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]
|
|
||||||
```
|
|
||||||
|
|
||||||
### Distance between two points
|
### Distance between two points
|
||||||
|
|
||||||
Use `Math.hypot()` to calculate the Euclidean distance between two points.
|
Use `Math.hypot()` to calculate the Euclidean distance between two points.
|
||||||
|
|||||||
8
snippets/array-difference.md
Normal file
8
snippets/array-difference.md
Normal 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]
|
||||||
|
```
|
||||||
8
snippets/array-intersection.md
Normal file
8
snippets/array-intersection.md
Normal 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
8
snippets/array-union.md
Normal 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]
|
||||||
|
```
|
||||||
@ -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]
|
|
||||||
```
|
|
||||||
Reference in New Issue
Block a user