diff --git a/README.md b/README.md index 54ed1daef..9708a6ab6 100644 --- a/README.md +++ b/README.md @@ -6,6 +6,44 @@ - Use Ctrl + F or command + F to search for a snippet. - Contributions welcome, please read [contribution guide](contributing.md). +## Contents + +* [Even or odd number](even-or-odd-number.md) +* [Greatest common divisor gcd](greatest-common-divisor-gcd.md) +* [RGB to hexadecimal](RGB-to-hexadecimal.md) +* [Sort characters in string alphabetical](sort-characters-in-string-alphabetical.md) +* [Sum of array of numbers](sum-of-array-of-numbers.md) +* [Unique values of array](unique-values-of-array.md) + +### Even or odd number + +Use `Math.abs()` to extend logic to negative numbers, check using the modulo (`%`) operator. +Return `true` if the number is even, `false` if the number is odd. + +```js +var isEven = num => Math.abs(num) % 2 === 0; +``` + +## Greatest common divisor (GCD) + +Use recursion. +Base case is when `y` equals `0`. In this case, return `x`. +Otherwise, return the GCD of `y` and the remainder of the division `x/y`. + +```js +var gcd = (x , y) => !y ? x : gcd(y, x % y); +``` + +## RGB to hexadecimal + +Convert each value to a hexadecimal string, using `toString(16)`, then `padStart(2,'0')` to get a 2-digit hexadecimal value. +Combine values using `join('')`. + +```js +var rgbToHex = (r, g, b) => + [r.toString(16).padStart(2,'0') , g.toString(16).padStart(2,'0') , b.toString(16).padStart(2,'0')].join(''); +``` + ### Sort characters in string (alphabetical) Split the string using `split('')`, `sort()` utilizing `localeCompare()`, recombine using `join('')`. @@ -15,6 +53,29 @@ var sortCharactersInString = str => str.split('').sort( (a,b) => a.localeCompare(b) ).join(''); ``` +### Sum of array of numbers + +Use `reduce()` to add each value to an accumulator, initialized with a value of `0`. + +```js +var sum = arr => + arr.reduce( (acc , val) => acc + val, 0); +``` + +### Unique values of array + +Use `reduce()` to accumulate all unique values in an array. +Check if each value has already been added, using `indexOf()` on the accumulator array. + +```js +var uniqueValues = arr => + arr.reduce( (acc, val) => { + if(acc.indexOf(val) === -1) + acc.push(val); + return acc; + }, []); +``` + ## Credits *Icons made by [Smashicons](https://www.flaticon.com/authors/smashicons) from [www.flaticon.com](https://www.flaticon.com/) is licensed by [CC 3.0 BY](http://creativecommons.org/licenses/by/3.0/).* diff --git a/scripts/builder.js b/scripts/builder.js index 6958feffd..9100db79b 100644 --- a/scripts/builder.js +++ b/scripts/builder.js @@ -27,6 +27,9 @@ catch (err){ try { output += `${startPart+'\n'}`; + for(var snippet of Object.entries(snippets)) + output += `* [${snippet[0][0].toUpperCase() + snippet[0].replace(/-/g,' ').slice(1,snippet[0].length-3)}](${snippet[0]})\n` + output += '\n'; for(var snippet of Object.entries(snippets)) output += `${snippet[1]+'\n'}`; output += `${endPart+'\n'}`; diff --git a/snippets/RGB-to-hexadecimal.md b/snippets/RGB-to-hexadecimal.md new file mode 100644 index 000000000..3e53fc25d --- /dev/null +++ b/snippets/RGB-to-hexadecimal.md @@ -0,0 +1,9 @@ +## RGB to hexadecimal + +Convert each value to a hexadecimal string, using `toString(16)`, then `padStart(2,'0')` to get a 2-digit hexadecimal value. +Combine values using `join('')`. + +```js +var rgbToHex = (r, g, b) => + [r.toString(16).padStart(2,'0') , g.toString(16).padStart(2,'0') , b.toString(16).padStart(2,'0')].join(''); +``` diff --git a/snippets/even-or-odd-number.md b/snippets/even-or-odd-number.md new file mode 100644 index 000000000..1745c5e24 --- /dev/null +++ b/snippets/even-or-odd-number.md @@ -0,0 +1,8 @@ +### Even or odd number + +Use `Math.abs()` to extend logic to negative numbers, check using the modulo (`%`) operator. +Return `true` if the number is even, `false` if the number is odd. + +```js +var isEven = num => Math.abs(num) % 2 === 0; +``` diff --git a/snippets/greatest-common-divisor-gcd.md b/snippets/greatest-common-divisor-gcd.md new file mode 100644 index 000000000..1a4b8a1e7 --- /dev/null +++ b/snippets/greatest-common-divisor-gcd.md @@ -0,0 +1,9 @@ +## Greatest common divisor (GCD) + +Use recursion. +Base case is when `y` equals `0`. In this case, return `x`. +Otherwise, return the GCD of `y` and the remainder of the division `x/y`. + +```js +var gcd = (x , y) => !y ? x : gcd(y, x % y); +``` diff --git a/snippets/sort-characters-in-string.md b/snippets/sort-characters-in-string-alphabetical.md similarity index 100% rename from snippets/sort-characters-in-string.md rename to snippets/sort-characters-in-string-alphabetical.md diff --git a/snippets/sum-of-array-of-numbers.md b/snippets/sum-of-array-of-numbers.md new file mode 100644 index 000000000..22d202550 --- /dev/null +++ b/snippets/sum-of-array-of-numbers.md @@ -0,0 +1,8 @@ +### Sum of array of numbers + +Use `reduce()` to add each value to an accumulator, initialized with a value of `0`. + +```js +var sum = arr => + arr.reduce( (acc , val) => acc + val, 0); +``` diff --git a/snippets/unique-values-of-array.md b/snippets/unique-values-of-array.md new file mode 100644 index 000000000..d00c7f112 --- /dev/null +++ b/snippets/unique-values-of-array.md @@ -0,0 +1,13 @@ +### Unique values of array + +Use `reduce()` to accumulate all unique values in an array. +Check if each value has already been added, using `indexOf()` on the accumulator array. + +```js +var uniqueValues = arr => + arr.reduce( (acc, val) => { + if(acc.indexOf(val) === -1) + acc.push(val); + return acc; + }, []); +``` diff --git a/static-parts/README-start.md b/static-parts/README-start.md index 835f73882..d4cefebea 100644 --- a/static-parts/README-start.md +++ b/static-parts/README-start.md @@ -5,3 +5,5 @@ - Use Ctrl + F or command + F to search for a snippet. - Contributions welcome, please read [contribution guide](contributing.md). + +## Contents