From 78d1efe51208146e2fe6f4755f624f0484460e94 Mon Sep 17 00:00:00 2001 From: Blake Callens Date: Mon, 11 Dec 2017 14:25:45 -0500 Subject: [PATCH 01/32] Added capitalize first letter of every word --- README.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/README.md b/README.md index 70476c2a9..597a57371 100644 --- a/README.md +++ b/README.md @@ -11,6 +11,7 @@ * [Anagrams of string (with duplicates)](#anagrams-of-string-with-duplicates) * [Average of array of numbers](#average-of-array-of-numbers) * [Capitalize first letter](#capitalize-first-letter) +* [Capitalize first letter of every word](#capitalize-first-letter-of-every-word) * [Count occurences of a value in array](#count-occurences-of-a-value-in-array) * [Current URL](#current-url) * [Curry](#curry) @@ -79,6 +80,14 @@ Use `toUpperCase()` to capitalize first letter, `slice(1)` to get the rest of th var capitalize = str => str[0].toUpperCase() + str.slice(1); ``` +### Capitalize first letter of every word + +Use `replace()` to match the first character of each word and `toUpperCase()` to capitalize it. + +```js +var capitalizeEveryWord = str => str.replace(/\b[a-z]/g, char => char.toUpperCase()); +``` + ### Count occurences of a value in array Use `filter()` to create an array containing only the items with the specified value, count them using `length`. From 18c14a236a3f3201bd322e9f013c767249e64e79 Mon Sep 17 00:00:00 2001 From: Xavey Aguarez Date: Mon, 11 Dec 2017 16:46:07 -0800 Subject: [PATCH 02/32] Update unique-values-of-array.md --- snippets/unique-values-of-array.md | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/snippets/unique-values-of-array.md b/snippets/unique-values-of-array.md index d00c7f112..bbbaddbb9 100644 --- a/snippets/unique-values-of-array.md +++ b/snippets/unique-values-of-array.md @@ -1,13 +1,19 @@ ### 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. +use ES6 `Set` and the `...rest` operator to discard all duplicated values. ```js -var uniqueValues = arr => - arr.reduce( (acc, val) => { - if(acc.indexOf(val) === -1) - acc.push(val); - return acc; - }, []); +const unique = c => [...new Set(c)] +// unique([1,2,2,3,4,4,5]) -> [1,2,3,4,5] ``` + +Use `Array.filter` for an array containing only the unique values + +```js +const unique = c => c.filter(i => c.indexOf(i) === c.lastIndexOf(i)) +// unique([1,2,2,3,4,4,5]) -> [1,3,5] +``` + + + + From d0b6531c456468bdd7c5fdf2dab17ca5998e4a20 Mon Sep 17 00:00:00 2001 From: Danny Feliz Date: Mon, 11 Dec 2017 21:28:20 -0400 Subject: [PATCH 03/32] =?UTF-8?q?Replace=20the=20usage=20of=20=C3=ACndexOf?= =?UTF-8?q?`=20for=20`includes`?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 9b166f0f6..eb2e006d0 100644 --- a/README.md +++ b/README.md @@ -109,11 +109,11 @@ var curry = f => ### Difference between arrays -Use `filter()` to remove values that are part of `values`, determined using `indexOf()`. +Use `filter()` to remove values that are part of `values`, determined using `includes()`. ```js var difference = (arr, values) => - arr.filter(v => values.indexOf(v) === -1); + arr.filter(v => !values.includes(v)); ``` ### Distance between two points @@ -315,11 +315,11 @@ var scrollToTop = _ => { ### Similarity between arrays -Use `filter()` to remove values that are not part of `values`, determined using `indexOf()`. +Use `filter()` to remove values that are not part of `values`, determined using `includes()`. ```js var difference = (arr, values) => - arr.filter(v => values.indexOf(v) !== -1); + arr.filter(v => values.includes(v)); ``` ### Sort characters in string (alphabetical) @@ -359,12 +359,12 @@ var tail = arr => arr.slice(1); ### 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. +Check if each value has already been added, using `includes()` on the accumulator array. ```js var uniqueValues = arr => arr.reduce( (acc, val) => { - if(acc.indexOf(val) === -1) + if(acc.indexOf(val)) acc.push(val); return acc; }, []); From e28bd9a95ff0d8b9841ac96b273aea006eaa7684 Mon Sep 17 00:00:00 2001 From: Danny Feliz Date: Mon, 11 Dec 2017 21:32:47 -0400 Subject: [PATCH 04/32] =?UTF-8?q?eplace=20the=20usage=20of=20=C3=ACndexOf`?= =?UTF-8?q?=20for=20`includes`?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index eb2e006d0..4a3214633 100644 --- a/README.md +++ b/README.md @@ -364,7 +364,7 @@ Check if each value has already been added, using `includes()` on the accumulato ```js var uniqueValues = arr => arr.reduce( (acc, val) => { - if(acc.indexOf(val)) + if(!acc.includes(val)) acc.push(val); return acc; }, []); From f53bbbe12884eeaf5e2ef9cf7d31c0bdb6faae82 Mon Sep 17 00:00:00 2001 From: Ivan Babak Date: Mon, 11 Dec 2017 18:29:37 -0800 Subject: [PATCH 05/32] Capitalize first letter: safe against empty string `""[0]` -> `undefined` `"".slice(0, 1)` -> `""` --- snippets/capitalize-first-letter.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/snippets/capitalize-first-letter.md b/snippets/capitalize-first-letter.md index 56e42eab5..84447ee21 100644 --- a/snippets/capitalize-first-letter.md +++ b/snippets/capitalize-first-letter.md @@ -3,5 +3,5 @@ Use `toUpperCase()` to capitalize first letter, `slice(1)` to get the rest of the string. ```js -var capitalize = str => str[0].toUpperCase() + str.slice(1); +var capitalize = str => str.slice(0, 1).toUpperCase() + str.slice(1); ``` From 67edd766e387ffcc60db9d78b3de2685ac659754 Mon Sep 17 00:00:00 2001 From: segmentationfaulter Date: Tue, 12 Dec 2017 11:43:45 +0500 Subject: [PATCH 06/32] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 9b166f0f6..41b7fc9cf 100644 --- a/README.md +++ b/README.md @@ -301,7 +301,7 @@ var rgbToHex = (r, g, b) => ### Scroll to top Get distance from top using `document.documentElement.scrollTop` or `document.body.scrollTop`. -Scroll by a fraction of the distance from top. Use `window.requestFrame()` to animate the scrolling. +Scroll by a fraction of the distance from top. Use `window.requestAnimationFrame()` to animate the scrolling. ```js var scrollToTop = _ => { From 6119b2566c6b1c3fb983bcc4c237e499b5753409 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stefan=20Feje=C5=A1?= Date: Tue, 12 Dec 2017 07:57:02 +0100 Subject: [PATCH 07/32] Add reverseString --- README.md | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 9b166f0f6..8152f1c7c 100644 --- a/README.md +++ b/README.md @@ -255,7 +255,7 @@ var objectFromPairs = arr => ### Powerset -Use `reduce()` combined with `map()` to iterate over elements and combine into an array containing all combinations. +Use `reduce()` combined with `map()` to iterate over elements and combine into an array containing all combinations. ```js var powerset = arr => @@ -288,6 +288,14 @@ var redirect = (url, asLink = true) => asLink ? window.location.href = url : window.location.replace(url); ``` +### Reverse a string + +Use `reverse()` to reverse order of elements in `destructed` array. Combine elements to get a string using `join('')`. + +```js +var reverseString = str => [...str].reverse().join(''); +``` + ### RGB to hexadecimal Convert each value to a hexadecimal string, using `toString(16)`, then `padStart(2,'0')` to get a 2-digit hexadecimal value. From 863af5e1591bbe7e446af3c83d8fb6044ce505a2 Mon Sep 17 00:00:00 2001 From: Darren Scerri Date: Tue, 12 Dec 2017 09:45:19 +0100 Subject: [PATCH 08/32] Fix syntax error --- README.md | 2 +- snippets/distance-between-two-points.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 9b166f0f6..cb3cad760 100644 --- a/README.md +++ b/README.md @@ -121,7 +121,7 @@ var difference = (arr, values) => Use `Math.pow()` and `Math.sqrt()` to calculate the Euclidean distance between two points. ```js -var distance = x0, y0, x1, y1 => +var distance = (x0, y0, x1, y1) => Math.sqrt(Math.pow(x1-x0, 2) + Math.pow(y1 - y0, 2)) ``` diff --git a/snippets/distance-between-two-points.md b/snippets/distance-between-two-points.md index e8c91eafd..f6e4eb74c 100644 --- a/snippets/distance-between-two-points.md +++ b/snippets/distance-between-two-points.md @@ -3,6 +3,6 @@ Use `Math.pow()` and `Math.sqrt()` to calculate the Euclidean distance between two points. ```js -var distance = x0, y0, x1, y1 => +var distance = (x0, y0, x1, y1) => Math.sqrt(Math.pow(x1-x0, 2) + Math.pow(y1 - y0, 2)) ``` From 27c38d2f8a894e76308b6165319dc80d13d960d3 Mon Sep 17 00:00:00 2001 From: Angelos Chalaris Date: Tue, 12 Dec 2017 10:52:57 +0200 Subject: [PATCH 09/32] Updated distance to use Math.hypot() --- README.md | 5 ++--- snippets/distance-between-two-points.md | 5 ++--- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index cb3cad760..8b75fb1f5 100644 --- a/README.md +++ b/README.md @@ -118,11 +118,10 @@ var difference = (arr, values) => ### Distance between two points -Use `Math.pow()` and `Math.sqrt()` to calculate the Euclidean distance between two points. +Use `Math.hypot()` to calculate the Euclidean distance between two points. ```js -var distance = (x0, y0, x1, y1) => - Math.sqrt(Math.pow(x1-x0, 2) + Math.pow(y1 - y0, 2)) +const distance = (x0, y0, x1, y1) => Math.hypot(x1 - x0, y1 - y0); ``` ### Escape regular expression diff --git a/snippets/distance-between-two-points.md b/snippets/distance-between-two-points.md index f6e4eb74c..a93ca2102 100644 --- a/snippets/distance-between-two-points.md +++ b/snippets/distance-between-two-points.md @@ -1,8 +1,7 @@ ### Distance between two points -Use `Math.pow()` and `Math.sqrt()` to calculate the Euclidean distance between two points. +Use `Math.hypot()` to calculate the Euclidean distance between two points. ```js -var distance = (x0, y0, x1, y1) => - Math.sqrt(Math.pow(x1-x0, 2) + Math.pow(y1 - y0, 2)) +const distance = (x0, y0, x1, y1) => Math.hypot(x1 - x0, y1 - y0); ``` From c793bf4062918785f114ae1d40674ebc2f24a39c Mon Sep 17 00:00:00 2001 From: Angelos Chalaris Date: Tue, 12 Dec 2017 10:59:22 +0200 Subject: [PATCH 10/32] Unique values and filtering --- README.md | 21 ++++++++++++------- ...filter-out-non-uniqe-values-in-an-array.md | 8 +++++++ snippets/unique-values-of-array.md | 15 ++----------- 3 files changed, 23 insertions(+), 21 deletions(-) create mode 100644 snippets/filter-out-non-uniqe-values-in-an-array.md diff --git a/README.md b/README.md index 8b75fb1f5..e75a410c3 100644 --- a/README.md +++ b/README.md @@ -20,6 +20,7 @@ * [Even or odd number](#even-or-odd-number) * [Factorial](#factorial) * [Fibonacci array generator](#fibonacci-array-generator) +* [Filter out non uniqe values in an array](#filter-out-non-uniqe-values-in-an-array) * [Flatten array](#flatten-array) * [Greatest common divisor (GCD)](#greatest-common-divisor-gcd) * [Head of list](#head-of-list) @@ -166,6 +167,15 @@ var fibonacci = n => },[]); ``` +### Filter out non-unique values in an array + +Use `Array.filter()` for an array containing only the unique values. + +```js +const unique = arr => arr.filter(i => arr.indexOf(i) === arr.lastIndexOf(i)); +// unique([1,2,2,3,4,4,5]) -> [1,3,5] +``` + ### Flatten array Use recursion. @@ -357,16 +367,11 @@ var tail = arr => arr.slice(1); ### 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. +Use ES6 `Set` and the `...rest` operator to discard all duplicated values. ```js -var uniqueValues = arr => - arr.reduce( (acc, val) => { - if(acc.indexOf(val) === -1) - acc.push(val); - return acc; - }, []); +const unique = arr => [...new Set(arr)]; +// unique([1,2,2,3,4,4,5]) -> [1,2,3,4,5] ``` ### URL parameters diff --git a/snippets/filter-out-non-uniqe-values-in-an-array.md b/snippets/filter-out-non-uniqe-values-in-an-array.md new file mode 100644 index 000000000..622026234 --- /dev/null +++ b/snippets/filter-out-non-uniqe-values-in-an-array.md @@ -0,0 +1,8 @@ +### Filter out non-unique values in an array + +Use `Array.filter()` for an array containing only the unique values. + +```js +const unique = arr => arr.filter(i => arr.indexOf(i) === arr.lastIndexOf(i)); +// unique([1,2,2,3,4,4,5]) -> [1,3,5] +``` diff --git a/snippets/unique-values-of-array.md b/snippets/unique-values-of-array.md index bbbaddbb9..0d7639815 100644 --- a/snippets/unique-values-of-array.md +++ b/snippets/unique-values-of-array.md @@ -1,19 +1,8 @@ ### Unique values of array -use ES6 `Set` and the `...rest` operator to discard all duplicated values. +Use ES6 `Set` and the `...rest` operator to discard all duplicated values. ```js -const unique = c => [...new Set(c)] +const unique = arr => [...new Set(arr)]; // unique([1,2,2,3,4,4,5]) -> [1,2,3,4,5] ``` - -Use `Array.filter` for an array containing only the unique values - -```js -const unique = c => c.filter(i => c.indexOf(i) === c.lastIndexOf(i)) -// unique([1,2,2,3,4,4,5]) -> [1,3,5] -``` - - - - From 2016aa07ad52a2d2e5a95c3f3aa175527a9a9c3e Mon Sep 17 00:00:00 2001 From: Darren Scerri Date: Tue, 12 Dec 2017 10:03:28 +0100 Subject: [PATCH 11/32] Fix typos --- CONTRIBUTING.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index b1aee2261..030eb5475 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,11 +1,11 @@ ## Contributing -You can cntribute to **30 seconds of code** by sending pull requests for snippets that you find useful, reporting issues with current snippets or suggesting changes and/or additions. +You can contribute to **30 seconds of code** by sending pull requests for snippets that you find useful, reporting issues with current snippets or suggesting changes and/or additions. ### Guidelines for new snippets - Snippets must be short. Usually anything above 10 lines would be considered too long, but you can still submit it as it might be possible to shorten it or it might still prove useful regardless of its length. -- Snippets must be explain to a certain extent in the description above them. Make sure to include what functions you are using and why. +- Snippets must be explained to a certain extent in the description above them. Make sure to include what functions you are using and why. - Snippets must solve real-world problems and should be abstract enough to use in different scenarios. This is highly subjective, so send them in anyways. - Snippets *should* be written in ES6 if possible. - Snippet files must follow the anchor name conventions of (GitHub Flavored Markdown)[https://github.github.com/gfm/], so that the `builder.js` can build the links for the list. From cf5283a0f909a6ff2fc8252cced1d13c2600fcc2 Mon Sep 17 00:00:00 2001 From: Angelos Chalaris Date: Tue, 12 Dec 2017 11:09:27 +0200 Subject: [PATCH 12/32] Build README --- README.md | 7 ++----- snippets/difference-between-arrays.md | 5 ++--- snippets/similarity-between-arrays.md | 5 ++--- 3 files changed, 6 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index 3f87344cf..61243a0ce 100644 --- a/README.md +++ b/README.md @@ -113,8 +113,7 @@ var curry = f => Use `filter()` to remove values that are part of `values`, determined using `includes()`. ```js -var difference = (arr, values) => - arr.filter(v => !values.includes(v)); +var difference = (arr, values) => arr.filter(v => !values.includes(v)); ``` ### Distance between two points @@ -327,8 +326,7 @@ var scrollToTop = _ => { Use `filter()` to remove values that are not part of `values`, determined using `includes()`. ```js -var difference = (arr, values) => - arr.filter(v => values.includes(v)); +var difference = (arr, values) => arr.filter(v => values.includes(v)); ``` ### Sort characters in string (alphabetical) @@ -367,7 +365,6 @@ var tail = arr => arr.slice(1); ### Unique values of array - Use ES6 `Set` and the `...rest` operator to discard all duplicated values. ```js diff --git a/snippets/difference-between-arrays.md b/snippets/difference-between-arrays.md index 01e6c5883..51e805966 100644 --- a/snippets/difference-between-arrays.md +++ b/snippets/difference-between-arrays.md @@ -1,8 +1,7 @@ ### Difference between arrays -Use `filter()` to remove values that are part of `values`, determined using `indexOf()`. +Use `filter()` to remove values that are part of `values`, determined using `includes()`. ```js -var difference = (arr, values) => - arr.filter(v => values.indexOf(v) === -1); +var difference = (arr, values) => arr.filter(v => !values.includes(v)); ``` diff --git a/snippets/similarity-between-arrays.md b/snippets/similarity-between-arrays.md index b4d08de0a..4ba95bf04 100644 --- a/snippets/similarity-between-arrays.md +++ b/snippets/similarity-between-arrays.md @@ -1,8 +1,7 @@ ### Similarity between arrays -Use `filter()` to remove values that are not part of `values`, determined using `indexOf()`. +Use `filter()` to remove values that are not part of `values`, determined using `includes()`. ```js -var difference = (arr, values) => - arr.filter(v => values.indexOf(v) !== -1); +var difference = (arr, values) => arr.filter(v => values.includes(v)); ``` From 341b9ec1e47fd31274221d9feee3100998121439 Mon Sep 17 00:00:00 2001 From: Angelos Chalaris Date: Tue, 12 Dec 2017 11:14:13 +0200 Subject: [PATCH 13/32] Build README --- snippets/scroll-to-top.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/snippets/scroll-to-top.md b/snippets/scroll-to-top.md index a562869d2..64da4d2ea 100644 --- a/snippets/scroll-to-top.md +++ b/snippets/scroll-to-top.md @@ -1,7 +1,7 @@ ### Scroll to top Get distance from top using `document.documentElement.scrollTop` or `document.body.scrollTop`. -Scroll by a fraction of the distance from top. Use `window.requestFrame()` to animate the scrolling. +Scroll by a fraction of the distance from top. Use `window.requestAnimationFrame()` to animate the scrolling. ```js var scrollToTop = _ => { From 5be9783159a941a8942345b9fbfb4dbe9fe4747d Mon Sep 17 00:00:00 2001 From: Angelos Chalaris Date: Tue, 12 Dec 2017 11:16:47 +0200 Subject: [PATCH 14/32] Build README --- README.md | 4 ++-- snippets/capitalize-first-letter.md | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index a9919919b..16a5dd1e1 100644 --- a/README.md +++ b/README.md @@ -74,10 +74,10 @@ var average = arr => ### Capitalize first letter -Use `toUpperCase()` to capitalize first letter, `slice(1)` to get the rest of the string. +Use `sice(0,1)` and `toUpperCase()` to capitalize first letter, `slice(1)` to get the rest of the string. ```js -var capitalize = str => str[0].toUpperCase() + str.slice(1); +var capitalize = str => str.slice(0, 1).toUpperCase() + str.slice(1); ``` ### Count occurrences of a value in array diff --git a/snippets/capitalize-first-letter.md b/snippets/capitalize-first-letter.md index 84447ee21..1310e76ed 100644 --- a/snippets/capitalize-first-letter.md +++ b/snippets/capitalize-first-letter.md @@ -1,6 +1,6 @@ ### Capitalize first letter -Use `toUpperCase()` to capitalize first letter, `slice(1)` to get the rest of the string. +Use `sice(0,1)` and `toUpperCase()` to capitalize first letter, `slice(1)` to get the rest of the string. ```js var capitalize = str => str.slice(0, 1).toUpperCase() + str.slice(1); From 74654fdd0c0de4519da21bcaab5c6a2f9a87657d Mon Sep 17 00:00:00 2001 From: Darren Scerri Date: Tue, 12 Dec 2017 10:25:09 +0100 Subject: [PATCH 15/32] case-insensitive sort --- scripts/builder.js | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/scripts/builder.js b/scripts/builder.js index 1b6ab5b67..b3305147a 100644 --- a/scripts/builder.js +++ b/scripts/builder.js @@ -7,7 +7,19 @@ var staticPartsPath = './static-parts'; var snippets = {}, startPart = '', endPart = '', output = ''; try { - for(var snippet of fs.readdirSync(snippetsPath)){ + var snippetFilenames = fs.readdirSync(snippetsPath); + snippetFilenames.sort((a, b) => { + a = a.toLowerCase(); + b = b.toLowerCase(); + if (a < b) { + return -1; + } + if (a > b) { + return 1; + } + return 0; + }); + for(var snippet of snippetFilenames){ snippets[snippet] = fs.readFileSync(path.join(snippetsPath,snippet),'utf8'); } } From 39f720e9c36c825f6c2c0d230ffd0fe4ba5ef635 Mon Sep 17 00:00:00 2001 From: Thalis Kalfigkopoulos Date: Tue, 12 Dec 2017 10:26:01 +0100 Subject: [PATCH 16/32] Count occurrences of value in array with reduce Doesn't require creation of new array as with current solution. --- snippets/count-occurrences-of-a-value-in-array.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/snippets/count-occurrences-of-a-value-in-array.md b/snippets/count-occurrences-of-a-value-in-array.md index e7d532435..f9e3f8f82 100644 --- a/snippets/count-occurrences-of-a-value-in-array.md +++ b/snippets/count-occurrences-of-a-value-in-array.md @@ -5,3 +5,9 @@ Use `filter()` to create an array containing only the items with the specified v ```js var countOccurrences = (arr, value) => arr.filter(v => v === value).length; ``` + +Use reduce() to increment a counter each time you encounter the specific value; does not create new array like filter(). + +```js +var countOccurrences = (arr, value) => arr.reduce((a, v) => v===value ? a + 1 : a + 0, 0); +``` From 54daad2b706702d56dea7a99624725ebce2ff6b0 Mon Sep 17 00:00:00 2001 From: Angelos Chalaris Date: Tue, 12 Dec 2017 11:27:10 +0200 Subject: [PATCH 17/32] Updated string reversal --- README.md | 8 +++++--- snippets/reverse-a-string.md | 8 ++++++++ 2 files changed, 13 insertions(+), 3 deletions(-) create mode 100644 snippets/reverse-a-string.md diff --git a/README.md b/README.md index 9914e2d30..bbadea755 100644 --- a/README.md +++ b/README.md @@ -34,6 +34,7 @@ * [Random number in range](#random-number-in-range) * [Randomize order of array](#randomize-order-of-array) * [Redirect to url](#redirect-to-url) +* [Reverse a string](#reverse-a-string) * [RGB to hexadecimal](#rgb-to-hexadecimal) * [Scroll to top](#scroll-to-top) * [Similarity between arrays](#similarity-between-arrays) @@ -263,7 +264,7 @@ var objectFromPairs = arr => ### Powerset -Use `reduce()` combined with `map()` to iterate over elements and combine into an array containing all combinations. +Use `reduce()` combined with `map()` to iterate over elements and combine into an array containing all combinations. ```js var powerset = arr => @@ -298,10 +299,11 @@ var redirect = (url, asLink = true) => ### Reverse a string -Use `reverse()` to reverse order of elements in `destructed` array. Combine elements to get a string using `join('')`. +Use array destructuring and `Array.reverse()` to reverse the order of the characters in the string. +Combine characters to get a string using `join('')`. ```js -var reverseString = str => [...str].reverse().join(''); +var reverseString = str => [...str].reverse().join(''); ``` ### RGB to hexadecimal diff --git a/snippets/reverse-a-string.md b/snippets/reverse-a-string.md new file mode 100644 index 000000000..5e7c41e7d --- /dev/null +++ b/snippets/reverse-a-string.md @@ -0,0 +1,8 @@ +### Reverse a string + +Use array destructuring and `Array.reverse()` to reverse the order of the characters in the string. +Combine characters to get a string using `join('')`. + +```js +var reverseString = str => [...str].reverse().join(''); +``` From 0fedf18b6c40400179e2def54e41c734cd2c52d3 Mon Sep 17 00:00:00 2001 From: karamarimo Date: Tue, 12 Dec 2017 18:38:20 +0900 Subject: [PATCH 18/32] add another way to calculate factorial --- snippets/factorial.md | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/snippets/factorial.md b/snippets/factorial.md index fb60c9204..dbdb7a802 100644 --- a/snippets/factorial.md +++ b/snippets/factorial.md @@ -1,6 +1,12 @@ ### Factorial -Create an array of length `n+1`, use `reduce()` to get the product of every value in the given range, utilizing the index of each element. +Use recursion. If `n` is less than (for safety) or equal to `1`, return `1`. Otherwise, return the product of `n` and the factorial of `n - 1`. + +```js +const factorial = n => n <= 1 ? 1 : n * factorial(n - 1) +``` + +Another way: create an array of length `n+1`, use `reduce()` to get the product of every value in the given range, utilizing the index of each element. ```js var factorial = n => From 5f67fb2b24f6c269db520e1f42a1e83a67e369cd Mon Sep 17 00:00:00 2001 From: Angelos Chalaris Date: Tue, 12 Dec 2017 11:54:19 +0200 Subject: [PATCH 19/32] Build README --- README.md | 7 ++++--- snippets/factorial.md | 11 +++-------- 2 files changed, 7 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index bbadea755..1ac43f289 100644 --- a/README.md +++ b/README.md @@ -146,11 +146,12 @@ var isEven = num => Math.abs(num) % 2 === 0; ### Factorial -Create an array of length `n+1`, use `reduce()` to get the product of every value in the given range, utilizing the index of each element. +Use recursion. +If `n` is less than or equal to `1`, return `1`. +Otherwise, return the product of `n` and the factorial of `n - 1`. ```js -var factorial = n => - Array.apply(null, [1].concat(Array(n))).reduce( (a, _, i) => a * i || 1 , 1); +const factorial = n => n <= 1 ? 1 : n * factorial(n - 1) ``` ### Fibonacci array generator diff --git a/snippets/factorial.md b/snippets/factorial.md index dbdb7a802..8472c3f51 100644 --- a/snippets/factorial.md +++ b/snippets/factorial.md @@ -1,14 +1,9 @@ ### Factorial -Use recursion. If `n` is less than (for safety) or equal to `1`, return `1`. Otherwise, return the product of `n` and the factorial of `n - 1`. +Use recursion. +If `n` is less than or equal to `1`, return `1`. +Otherwise, return the product of `n` and the factorial of `n - 1`. ```js const factorial = n => n <= 1 ? 1 : n * factorial(n - 1) ``` - -Another way: create an array of length `n+1`, use `reduce()` to get the product of every value in the given range, utilizing the index of each element. - -```js -var factorial = n => - Array.apply(null, [1].concat(Array(n))).reduce( (a, _, i) => a * i || 1 , 1); -``` From 476e3f1a88276617c5a92d03908227102ca1a47a Mon Sep 17 00:00:00 2001 From: Rob Murray Date: Tue, 12 Dec 2017 10:08:30 +0000 Subject: [PATCH 20/32] Change last-of-list function name Update Last of List function name to `last` to avoid confusion. --- snippets/last-of-list.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/snippets/last-of-list.md b/snippets/last-of-list.md index 4397d5980..37536f0cb 100644 --- a/snippets/last-of-list.md +++ b/snippets/last-of-list.md @@ -3,5 +3,5 @@ Return `arr.slice(-1)[0]`. ```js -var initial = arr => arr.slice(-1)[0]; +var last = arr => arr.slice(-1)[0]; ``` From 03bfaf6b7aa730291bee2ed893db17aac0d80e59 Mon Sep 17 00:00:00 2001 From: Angelos Chalaris Date: Tue, 12 Dec 2017 12:12:44 +0200 Subject: [PATCH 21/32] Build README --- README.md | 4 ++-- snippets/count-occurrences-of-a-value-in-array.md | 8 +------- 2 files changed, 3 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index 1ac43f289..e21ec0025 100644 --- a/README.md +++ b/README.md @@ -83,10 +83,10 @@ var capitalize = str => str.slice(0, 1).toUpperCase() + str.slice(1); ### Count occurrences of a value in array -Use `filter()` to create an array containing only the items with the specified value, count them using `length`. +Use `reduce()` to increment a counter each time you encounter the specific value inside the array. ```js -var countOccurrences = (arr, value) => arr.filter(v => v === value).length; +var countOccurrences = (arr, value) => arr.reduce((a, v) => v===value ? a + 1 : a + 0, 0); ``` ### Current URL diff --git a/snippets/count-occurrences-of-a-value-in-array.md b/snippets/count-occurrences-of-a-value-in-array.md index f9e3f8f82..786458f7a 100644 --- a/snippets/count-occurrences-of-a-value-in-array.md +++ b/snippets/count-occurrences-of-a-value-in-array.md @@ -1,12 +1,6 @@ ### Count occurrences of a value in array -Use `filter()` to create an array containing only the items with the specified value, count them using `length`. - -```js -var countOccurrences = (arr, value) => arr.filter(v => v === value).length; -``` - -Use reduce() to increment a counter each time you encounter the specific value; does not create new array like filter(). +Use `reduce()` to increment a counter each time you encounter the specific value inside the array. ```js var countOccurrences = (arr, value) => arr.reduce((a, v) => v===value ? a + 1 : a + 0, 0); From f5d0a9dd31e325f0b8167cf735947b1860dff1ab Mon Sep 17 00:00:00 2001 From: Angelos Chalaris Date: Tue, 12 Dec 2017 12:13:51 +0200 Subject: [PATCH 22/32] Build README --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index e21ec0025..cf7ebab4e 100644 --- a/README.md +++ b/README.md @@ -238,7 +238,7 @@ var initializeArray = (n, v = 0) => Return `arr.slice(-1)[0]`. ```js -var initial = arr => arr.slice(-1)[0]; +var last = arr => arr.slice(-1)[0]; ``` ### Measure time taken by function From da37e7d585698da5991c76298e8529dcc33b4714 Mon Sep 17 00:00:00 2001 From: Shlomi Fish Date: Tue, 12 Dec 2017 12:55:59 +0200 Subject: [PATCH 23/32] Correct a typo in "slice". --- README.md | 9 +++++++++ snippets/capitalize-first-letter.md | 2 +- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index cf7ebab4e..c0f80715b 100644 --- a/README.md +++ b/README.md @@ -11,6 +11,7 @@ * [Anagrams of string (with duplicates)](#anagrams-of-string-with-duplicates) * [Average of array of numbers](#average-of-array-of-numbers) * [Capitalize first letter](#capitalize-first-letter) +* [Capitalize first letter.](#capitalize-first-letter.) * [Count occurrences of a value in array](#count-occurrences-of-a-value-in-array) * [Current URL](#current-url) * [Curry](#curry) @@ -75,6 +76,14 @@ var average = arr => ### Capitalize first letter +Use `slice(0,1)` and `toUpperCase()` to capitalize first letter, `slice(1)` to get the rest of the string. + +```js +var capitalize = str => str.slice(0, 1).toUpperCase() + str.slice(1); +``` + +### Capitalize first letter + Use `sice(0,1)` and `toUpperCase()` to capitalize first letter, `slice(1)` to get the rest of the string. ```js diff --git a/snippets/capitalize-first-letter.md b/snippets/capitalize-first-letter.md index 1310e76ed..cfc1415d0 100644 --- a/snippets/capitalize-first-letter.md +++ b/snippets/capitalize-first-letter.md @@ -1,6 +1,6 @@ ### Capitalize first letter -Use `sice(0,1)` and `toUpperCase()` to capitalize first letter, `slice(1)` to get the rest of the string. +Use `slice(0,1)` and `toUpperCase()` to capitalize first letter, `slice(1)` to get the rest of the string. ```js var capitalize = str => str.slice(0, 1).toUpperCase() + str.slice(1); From 14a4339c342dce619242501b527c239d79ec0667 Mon Sep 17 00:00:00 2001 From: Shlomi Fish Date: Tue, 12 Dec 2017 12:58:55 +0200 Subject: [PATCH 24/32] Correct stray duplicate snippet. --- README.md | 9 --------- 1 file changed, 9 deletions(-) diff --git a/README.md b/README.md index c0f80715b..543dbd858 100644 --- a/README.md +++ b/README.md @@ -11,7 +11,6 @@ * [Anagrams of string (with duplicates)](#anagrams-of-string-with-duplicates) * [Average of array of numbers](#average-of-array-of-numbers) * [Capitalize first letter](#capitalize-first-letter) -* [Capitalize first letter.](#capitalize-first-letter.) * [Count occurrences of a value in array](#count-occurrences-of-a-value-in-array) * [Current URL](#current-url) * [Curry](#curry) @@ -82,14 +81,6 @@ Use `slice(0,1)` and `toUpperCase()` to capitalize first letter, `slice(1)` to g var capitalize = str => str.slice(0, 1).toUpperCase() + str.slice(1); ``` -### Capitalize first letter - -Use `sice(0,1)` and `toUpperCase()` to capitalize first letter, `slice(1)` to get the rest of the string. - -```js -var capitalize = str => str.slice(0, 1).toUpperCase() + str.slice(1); -``` - ### Count occurrences of a value in array Use `reduce()` to increment a counter each time you encounter the specific value inside the array. From 5d9ca3d0febac2680fe3e4d3ff5b56838146f1ae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Renato=20de=20Le=C3=A3o?= Date: Tue, 12 Dec 2017 11:52:09 +0000 Subject: [PATCH 25/32] Get scroll position of HTMLElement / window --- README.md | 15 +++++++++++++++ snippets/get-scroll-position.md | 14 ++++++++++++++ 2 files changed, 29 insertions(+) create mode 100644 snippets/get-scroll-position.md diff --git a/README.md b/README.md index 543dbd858..fdc7177c2 100644 --- a/README.md +++ b/README.md @@ -22,6 +22,7 @@ * [Fibonacci array generator](#fibonacci-array-generator) * [Filter out non uniqe values in an array](#filter-out-non-uniqe-values-in-an-array) * [Flatten array](#flatten-array) +* [Get scroll position](#get-scroll-position) * [Greatest common divisor (GCD)](#greatest-common-divisor-gcd) * [Head of list](#head-of-list) * [Initial of list](#initial-of-list) @@ -187,6 +188,20 @@ var flatten = arr => arr.reduce( (a, v) => a.concat( Array.isArray(v) ? flatten(v) : v ), []); ``` +## Get Scroll Position + +Get the current distance scrolled by `window` or `HTMLElement` as an {x,y} object + +```js +const getScrollPos = (scroller = window) => { + let x = (scroller.pageXOffset !== undefined) ? scroller.pageXOffset : scroller.scrollLeft; + let y = (scroller.pageYOffset !== undefined) ? scroller.pageYOffset : scroller.scrollTop; + + return {x, y} +} + +// getScrollPos() -> {x: number, y: number} +``` ### Greatest common divisor (GCD) Use recursion. diff --git a/snippets/get-scroll-position.md b/snippets/get-scroll-position.md new file mode 100644 index 000000000..99cd00736 --- /dev/null +++ b/snippets/get-scroll-position.md @@ -0,0 +1,14 @@ +## Get Scroll Position + +Get the current distance scrolled by `window` or `HTMLElement` as an {x,y} object + +```js +const getScrollPos = (scroller = window) => { + let x = (scroller.pageXOffset !== undefined) ? scroller.pageXOffset : scroller.scrollLeft; + let y = (scroller.pageYOffset !== undefined) ? scroller.pageYOffset : scroller.scrollTop; + + return {x, y} +} + +// getScrollPos() -> {x: number, y: number} +``` \ No newline at end of file From 71eb402bbf4e1617d44518df1d8342afef74c9d1 Mon Sep 17 00:00:00 2001 From: Angelos Chalaris Date: Tue, 12 Dec 2017 14:09:11 +0200 Subject: [PATCH 26/32] Build README --- README.md | 18 ++++++++---------- snippets/get-scroll-position.md | 19 ++++++++----------- 2 files changed, 16 insertions(+), 21 deletions(-) diff --git a/README.md b/README.md index fdc7177c2..384034e5c 100644 --- a/README.md +++ b/README.md @@ -188,20 +188,18 @@ var flatten = arr => arr.reduce( (a, v) => a.concat( Array.isArray(v) ? flatten(v) : v ), []); ``` -## Get Scroll Position +## Get scroll position -Get the current distance scrolled by `window` or `HTMLElement` as an {x,y} object +Use `pageXOffset` and `pageYOffset` if they are defined, otherwise `scrollLeft` and `scrollTop`. +You can omit `el` to use a default value of `window`. ```js -const getScrollPos = (scroller = window) => { - let x = (scroller.pageXOffset !== undefined) ? scroller.pageXOffset : scroller.scrollLeft; - let y = (scroller.pageYOffset !== undefined) ? scroller.pageYOffset : scroller.scrollTop; - - return {x, y} -} - -// getScrollPos() -> {x: number, y: number} +const getScrollPos = (el = window) => + ( {x: (el.pageXOffset !== undefined) ? el.pageXOffset : el.scrollLeft, + y: (el.pageYOffset !== undefined) ? el.pageYOffset : el.scrollTop} ); +// getScrollPos() -> {x: 0, y: 200} ``` + ### Greatest common divisor (GCD) Use recursion. diff --git a/snippets/get-scroll-position.md b/snippets/get-scroll-position.md index 99cd00736..ea823fd18 100644 --- a/snippets/get-scroll-position.md +++ b/snippets/get-scroll-position.md @@ -1,14 +1,11 @@ -## Get Scroll Position +## Get scroll position -Get the current distance scrolled by `window` or `HTMLElement` as an {x,y} object +Use `pageXOffset` and `pageYOffset` if they are defined, otherwise `scrollLeft` and `scrollTop`. +You can omit `el` to use a default value of `window`. ```js -const getScrollPos = (scroller = window) => { - let x = (scroller.pageXOffset !== undefined) ? scroller.pageXOffset : scroller.scrollLeft; - let y = (scroller.pageYOffset !== undefined) ? scroller.pageYOffset : scroller.scrollTop; - - return {x, y} -} - -// getScrollPos() -> {x: number, y: number} -``` \ No newline at end of file +const getScrollPos = (el = window) => + ( {x: (el.pageXOffset !== undefined) ? el.pageXOffset : el.scrollLeft, + y: (el.pageYOffset !== undefined) ? el.pageYOffset : el.scrollTop} ); +// getScrollPos() -> {x: 0, y: 200} +``` From 98279117fa218efa10018b4c910cd54d6919f3f4 Mon Sep 17 00:00:00 2001 From: Jorge Gonzalez Date: Tue, 12 Dec 2017 07:11:37 -0500 Subject: [PATCH 27/32] Change all snippets from var to const --- snippets/RGB-to-hexadecimal.md | 2 +- snippets/URL-parameters.md | 2 +- snippets/UUID-generator.md | 2 +- snippets/anagrams-of-string-(with-duplicates).md | 2 +- snippets/average-of-array-of-numbers.md | 2 +- snippets/capitalize-first-letter.md | 2 +- snippets/count-occurrences-of-a-value-in-array.md | 2 +- snippets/current-URL.md | 2 +- snippets/curry.md | 2 +- snippets/difference-between-arrays.md | 2 +- snippets/escape-regular-expression.md | 2 +- snippets/even-or-odd-number.md | 2 +- snippets/fibonacci-array-generator.md | 2 +- snippets/flatten-array.md | 2 +- snippets/greatest-common-divisor-(GCD).md | 2 +- snippets/head-of-list.md | 2 +- snippets/initial-of-list.md | 2 +- snippets/initialize-array-with-range.md | 2 +- snippets/initialize-array-with-values.md | 2 +- snippets/last-of-list.md | 2 +- snippets/measure-time-taken-by-function.md | 2 +- snippets/object-from-key-value-pairs.md | 2 +- snippets/powerset.md | 4 ++-- snippets/random-number-in-range.md | 2 +- snippets/randomize-order-of-array.md | 2 +- snippets/redirect-to-url.md | 2 +- snippets/reverse-a-string.md | 2 +- snippets/scroll-to-top.md | 4 ++-- snippets/similarity-between-arrays.md | 2 +- snippets/sort-characters-in-string-(alphabetical).md | 2 +- snippets/sum-of-array-of-numbers.md | 2 +- snippets/tail-of-list.md | 2 +- snippets/validate-number.md | 2 +- 33 files changed, 35 insertions(+), 35 deletions(-) diff --git a/snippets/RGB-to-hexadecimal.md b/snippets/RGB-to-hexadecimal.md index 7c804c8e6..102821d53 100644 --- a/snippets/RGB-to-hexadecimal.md +++ b/snippets/RGB-to-hexadecimal.md @@ -4,6 +4,6 @@ Convert each value to a hexadecimal string, using `toString(16)`, then `padStart Combine values using `join('')`. ```js -var rgbToHex = (r, g, b) => +const rgbToHex = (r, g, b) => [r,g,b].map( v => v.toString(16).padStart(2,'0')).join(''); ``` diff --git a/snippets/URL-parameters.md b/snippets/URL-parameters.md index 05f523fba..9c1aff9a4 100644 --- a/snippets/URL-parameters.md +++ b/snippets/URL-parameters.md @@ -5,6 +5,6 @@ Combine all key-value pairs into a single object using `Object.assign()` and the Pass `location.search` as the argument to apply to the current `url`. ```js -var getUrlParameters = url => +const getUrlParameters = url => Object.assign(...url.match(/([^?=&]+)(=([^&]*))?/g).map(m => {[f,v] = m.split('='); return {[f]:v}})); ``` diff --git a/snippets/UUID-generator.md b/snippets/UUID-generator.md index a76d10034..1dafab3a1 100644 --- a/snippets/UUID-generator.md +++ b/snippets/UUID-generator.md @@ -3,7 +3,7 @@ Use `crypto` API to generate a UUID, compliant with [RFC4122](https://www.ietf.org/rfc/rfc4122.txt) version 4. ```js -var uuid = _ => +const uuid = _ => ( [1e7]+-1e3+-4e3+-8e3+-1e11 ).replace( /[018]/g, c => (c ^ crypto.getRandomValues(new Uint8Array(1))[0] & 15 >> c / 4).toString(16) ) diff --git a/snippets/anagrams-of-string-(with-duplicates).md b/snippets/anagrams-of-string-(with-duplicates).md index 9c13eed58..97140f0e4 100644 --- a/snippets/anagrams-of-string-(with-duplicates).md +++ b/snippets/anagrams-of-string-(with-duplicates).md @@ -6,7 +6,7 @@ Use `map()` to combine the letter with each partial anagram, then `reduce()` to Base cases are for string `length` equal to `2` or `1`. ```js -var anagrams = s => { +const anagrams = s => { if(s.length <= 2) return s.length === 2 ? [s, s[1] + s[0]] : [s]; return s.split('').reduce( (a,l,i) => { anagrams(s.slice(0,i) + s.slice(i+1)).map( v => a.push(l+v) ); diff --git a/snippets/average-of-array-of-numbers.md b/snippets/average-of-array-of-numbers.md index e0eeab7ff..53119bc32 100644 --- a/snippets/average-of-array-of-numbers.md +++ b/snippets/average-of-array-of-numbers.md @@ -3,6 +3,6 @@ Use `reduce()` to add each value to an accumulator, initialized with a value of `0`, divide by the `length` of the array. ```js -var average = arr => +const average = arr => arr.reduce( (acc , val) => acc + val, 0) / arr.length; ``` diff --git a/snippets/capitalize-first-letter.md b/snippets/capitalize-first-letter.md index cfc1415d0..773cc1343 100644 --- a/snippets/capitalize-first-letter.md +++ b/snippets/capitalize-first-letter.md @@ -3,5 +3,5 @@ Use `slice(0,1)` and `toUpperCase()` to capitalize first letter, `slice(1)` to get the rest of the string. ```js -var capitalize = str => str.slice(0, 1).toUpperCase() + str.slice(1); +const capitalize = str => str.slice(0, 1).toUpperCase() + str.slice(1); ``` diff --git a/snippets/count-occurrences-of-a-value-in-array.md b/snippets/count-occurrences-of-a-value-in-array.md index 786458f7a..459aa08d3 100644 --- a/snippets/count-occurrences-of-a-value-in-array.md +++ b/snippets/count-occurrences-of-a-value-in-array.md @@ -3,5 +3,5 @@ Use `reduce()` to increment a counter each time you encounter the specific value inside the array. ```js -var countOccurrences = (arr, value) => arr.reduce((a, v) => v===value ? a + 1 : a + 0, 0); +const countOccurrences = (arr, value) => arr.reduce((a, v) => v===value ? a + 1 : a + 0, 0); ``` diff --git a/snippets/current-URL.md b/snippets/current-URL.md index b417229e8..6256aeaea 100644 --- a/snippets/current-URL.md +++ b/snippets/current-URL.md @@ -3,5 +3,5 @@ Use `window.location.href` to get current URL. ```js -var currentUrl = _ => window.location.href; +const currentUrl = _ => window.location.href; ``` diff --git a/snippets/curry.md b/snippets/curry.md index a30e74433..b03d6bf3e 100644 --- a/snippets/curry.md +++ b/snippets/curry.md @@ -5,7 +5,7 @@ If the number of provided arguments (`args`) is sufficient, call the passed func Otherwise return a curried function `f` that expects the rest of the arguments. ```js -var curry = f => +const curry = f => (...args) => args.length >= f.length ? f(...args) : (...otherArgs) => curry(f)(...args, ...otherArgs) ``` diff --git a/snippets/difference-between-arrays.md b/snippets/difference-between-arrays.md index 51e805966..9976f67a9 100644 --- a/snippets/difference-between-arrays.md +++ b/snippets/difference-between-arrays.md @@ -3,5 +3,5 @@ Use `filter()` to remove values that are part of `values`, determined using `includes()`. ```js -var difference = (arr, values) => arr.filter(v => !values.includes(v)); +const difference = (arr, values) => arr.filter(v => !values.includes(v)); ``` diff --git a/snippets/escape-regular-expression.md b/snippets/escape-regular-expression.md index 00367ec3d..69fd9958a 100644 --- a/snippets/escape-regular-expression.md +++ b/snippets/escape-regular-expression.md @@ -3,7 +3,7 @@ Use `replace()` to escape special characters. ```js -var escapeRegExp = s => +const escapeRegExp = s => s.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); } ``` diff --git a/snippets/even-or-odd-number.md b/snippets/even-or-odd-number.md index 1745c5e24..c846aa517 100644 --- a/snippets/even-or-odd-number.md +++ b/snippets/even-or-odd-number.md @@ -4,5 +4,5 @@ Use `Math.abs()` to extend logic to negative numbers, check using the modulo (`% Return `true` if the number is even, `false` if the number is odd. ```js -var isEven = num => Math.abs(num) % 2 === 0; +const isEven = num => Math.abs(num) % 2 === 0; ``` diff --git a/snippets/fibonacci-array-generator.md b/snippets/fibonacci-array-generator.md index 209b186d6..08a587565 100644 --- a/snippets/fibonacci-array-generator.md +++ b/snippets/fibonacci-array-generator.md @@ -4,7 +4,7 @@ Create an empty array of the specific length, initializing the first two values Use `reduce()` to add values into the array, using the sum of the last two values, except for the first two. ```js -var fibonacci = n => +const fibonacci = n => Array.apply(null, [0,1].concat(Array(n-2))).reduce( (acc, val, i) => { acc.push( i>1 ? acc[i-1]+acc[i-2] : val); diff --git a/snippets/flatten-array.md b/snippets/flatten-array.md index eb5967a5e..cba163a5e 100644 --- a/snippets/flatten-array.md +++ b/snippets/flatten-array.md @@ -4,6 +4,6 @@ Use recursion. Use `reduce()` to get all elements that are not arrays, flatten each element that is an array. ```js -var flatten = arr => +const flatten = arr => arr.reduce( (a, v) => a.concat( Array.isArray(v) ? flatten(v) : v ), []); ``` diff --git a/snippets/greatest-common-divisor-(GCD).md b/snippets/greatest-common-divisor-(GCD).md index 3a201fb28..32935afe7 100644 --- a/snippets/greatest-common-divisor-(GCD).md +++ b/snippets/greatest-common-divisor-(GCD).md @@ -5,5 +5,5 @@ 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); +const gcd = (x , y) => !y ? x : gcd(y, x % y); ``` diff --git a/snippets/head-of-list.md b/snippets/head-of-list.md index b0b8e6305..16aec6a09 100644 --- a/snippets/head-of-list.md +++ b/snippets/head-of-list.md @@ -3,5 +3,5 @@ Return `arr[0]`. ```js -var head = arr => arr[0]; +const head = arr => arr[0]; ``` diff --git a/snippets/initial-of-list.md b/snippets/initial-of-list.md index 8ed934543..273c6d737 100644 --- a/snippets/initial-of-list.md +++ b/snippets/initial-of-list.md @@ -3,5 +3,5 @@ Return `arr.slice(0,-1)`. ```js -var initial = arr => arr.slice(0,-1); +const initial = arr => arr.slice(0,-1); ``` diff --git a/snippets/initialize-array-with-range.md b/snippets/initialize-array-with-range.md index 494138621..cdcc8fb82 100644 --- a/snippets/initialize-array-with-range.md +++ b/snippets/initialize-array-with-range.md @@ -4,6 +4,6 @@ Use `Array(end-start)` to create an array of the desired length, `map()` to fill You can omit `start` to use a default value of `0`. ```js -var initializeArrayRange = (end, start = 0) => +const initializeArrayRange = (end, start = 0) => Array.apply(null, Array(end-start)).map( (v,i) => i + start ); ``` diff --git a/snippets/initialize-array-with-values.md b/snippets/initialize-array-with-values.md index f03c1e78b..a01104ea8 100644 --- a/snippets/initialize-array-with-values.md +++ b/snippets/initialize-array-with-values.md @@ -4,6 +4,6 @@ Use `Array(n)` to create an array of the desired length, `fill(v)` to fill it wi You can omit `v` to use a default value of `0`. ```js -var initializeArray = (n, v = 0) => +const initializeArray = (n, v = 0) => Array(n).fill(v); ``` diff --git a/snippets/last-of-list.md b/snippets/last-of-list.md index 37536f0cb..62f7219a7 100644 --- a/snippets/last-of-list.md +++ b/snippets/last-of-list.md @@ -3,5 +3,5 @@ Return `arr.slice(-1)[0]`. ```js -var last = arr => arr.slice(-1)[0]; +const last = arr => arr.slice(-1)[0]; ``` diff --git a/snippets/measure-time-taken-by-function.md b/snippets/measure-time-taken-by-function.md index 254243c56..88dc7d48a 100644 --- a/snippets/measure-time-taken-by-function.md +++ b/snippets/measure-time-taken-by-function.md @@ -4,7 +4,7 @@ Use `performance.now()` to get start and end time for the function, `console.log First argument is the function name, subsequent arguments are passed to the function. ```js -var timeTaken = (f,...args) => { +const timeTaken = (f,...args) => { var t0 = performance.now(), r = f(...args); console.log(performance.now() - t0); return r; diff --git a/snippets/object-from-key-value-pairs.md b/snippets/object-from-key-value-pairs.md index e241fcdc9..81cfecaac 100644 --- a/snippets/object-from-key-value-pairs.md +++ b/snippets/object-from-key-value-pairs.md @@ -3,6 +3,6 @@ Use `map()` to create objects for each key-value pair, combine with `Object.assign()`. ```js -var objectFromPairs = arr => +const objectFromPairs = arr => Object.assign(...arr.map( v => {return {[v[0]] : v[1]};} )); ``` diff --git a/snippets/powerset.md b/snippets/powerset.md index 53c98a3a1..de2ecdc42 100644 --- a/snippets/powerset.md +++ b/snippets/powerset.md @@ -1,8 +1,8 @@ ### Powerset -Use `reduce()` combined with `map()` to iterate over elements and combine into an array containing all combinations. +Use `reduce()` combined with `map()` to iterate over elements and combine into an array containing all combinations. ```js -var powerset = arr => +const powerset = arr => arr.reduce( (a,v) => a.concat(a.map( r => [v].concat(r) )), [[]]); ``` diff --git a/snippets/random-number-in-range.md b/snippets/random-number-in-range.md index f9f768fa0..ed4dc7af8 100644 --- a/snippets/random-number-in-range.md +++ b/snippets/random-number-in-range.md @@ -3,5 +3,5 @@ Use `Math.random()` to generate a random value, map it to the desired range using multiplication. ```js -var randomInRange = (min, max) => Math.random() * (max - min) + min; +const randomInRange = (min, max) => Math.random() * (max - min) + min; ``` diff --git a/snippets/randomize-order-of-array.md b/snippets/randomize-order-of-array.md index 8228dcfdf..ed826338d 100644 --- a/snippets/randomize-order-of-array.md +++ b/snippets/randomize-order-of-array.md @@ -3,5 +3,5 @@ Use `sort()` to reorder elements, utilizing `Math.random()` to randomize the sorting. ```js -var randomizeOrder = arr => arr.sort( (a,b) => Math.random() >= 0.5 ? -1 : 1) +const randomizeOrder = arr => arr.sort( (a,b) => Math.random() >= 0.5 ? -1 : 1) ``` diff --git a/snippets/redirect-to-url.md b/snippets/redirect-to-url.md index d21fcf4b8..e459c9ea7 100644 --- a/snippets/redirect-to-url.md +++ b/snippets/redirect-to-url.md @@ -4,6 +4,6 @@ Use `window.location.href` or `window.location.replace()` to redirect to `url`. Pass a second argument to simulate a link click (`true` - default) or an HTTP redirect (`false`). ```js -var redirect = (url, asLink = true) => +const redirect = (url, asLink = true) => asLink ? window.location.href = url : window.location.replace(url); ``` diff --git a/snippets/reverse-a-string.md b/snippets/reverse-a-string.md index 5e7c41e7d..a8612177e 100644 --- a/snippets/reverse-a-string.md +++ b/snippets/reverse-a-string.md @@ -4,5 +4,5 @@ Use array destructuring and `Array.reverse()` to reverse the order of the charac Combine characters to get a string using `join('')`. ```js -var reverseString = str => [...str].reverse().join(''); +const reverseString = str => [...str].reverse().join(''); ``` diff --git a/snippets/scroll-to-top.md b/snippets/scroll-to-top.md index 64da4d2ea..1765fb4f3 100644 --- a/snippets/scroll-to-top.md +++ b/snippets/scroll-to-top.md @@ -4,8 +4,8 @@ Get distance from top using `document.documentElement.scrollTop` or `document.bo Scroll by a fraction of the distance from top. Use `window.requestAnimationFrame()` to animate the scrolling. ```js -var scrollToTop = _ => { - var c = document.documentElement.scrollTop || document.body.scrollTop; +const scrollToTop = _ => { + const c = document.documentElement.scrollTop || document.body.scrollTop; if(c > 0) { window.requestAnimationFrame(scrollToTop); window.scrollTo(0, c - c/8); diff --git a/snippets/similarity-between-arrays.md b/snippets/similarity-between-arrays.md index 4ba95bf04..7b71c56bd 100644 --- a/snippets/similarity-between-arrays.md +++ b/snippets/similarity-between-arrays.md @@ -3,5 +3,5 @@ Use `filter()` to remove values that are not part of `values`, determined using `includes()`. ```js -var difference = (arr, values) => arr.filter(v => values.includes(v)); +const difference = (arr, values) => arr.filter(v => values.includes(v)); ``` diff --git a/snippets/sort-characters-in-string-(alphabetical).md b/snippets/sort-characters-in-string-(alphabetical).md index 89ad75144..ac3c8208b 100644 --- a/snippets/sort-characters-in-string-(alphabetical).md +++ b/snippets/sort-characters-in-string-(alphabetical).md @@ -3,6 +3,6 @@ Split the string using `split('')`, `sort()` utilizing `localeCompare()`, recombine using `join('')`. ```js -var sortCharactersInString = str => +const sortCharactersInString = str => str.split('').sort( (a,b) => a.localeCompare(b) ).join(''); ``` diff --git a/snippets/sum-of-array-of-numbers.md b/snippets/sum-of-array-of-numbers.md index 22d202550..e5207ccb0 100644 --- a/snippets/sum-of-array-of-numbers.md +++ b/snippets/sum-of-array-of-numbers.md @@ -3,6 +3,6 @@ Use `reduce()` to add each value to an accumulator, initialized with a value of `0`. ```js -var sum = arr => +const sum = arr => arr.reduce( (acc , val) => acc + val, 0); ``` diff --git a/snippets/tail-of-list.md b/snippets/tail-of-list.md index 1b5adfd83..802a91ec6 100644 --- a/snippets/tail-of-list.md +++ b/snippets/tail-of-list.md @@ -3,5 +3,5 @@ Return `arr.slice(1)`. ```js -var tail = arr => arr.slice(1); +const tail = arr => arr.slice(1); ``` diff --git a/snippets/validate-number.md b/snippets/validate-number.md index 38bfb2f58..6f273350d 100644 --- a/snippets/validate-number.md +++ b/snippets/validate-number.md @@ -4,5 +4,5 @@ Use `!isNaN` in combination with `parseFloat()` to check if the argument is a nu Use `isFinite()` to check if the number is finite. ```js -var validateNumber = n => !isNaN(parseFloat(n)) && isFinite(n); +const validateNumber = n => !isNaN(parseFloat(n)) && isFinite(n); ``` From c6cef0a140074fb046e845f31832ac8b4d3c8c13 Mon Sep 17 00:00:00 2001 From: Angelos Chalaris Date: Tue, 12 Dec 2017 14:48:01 +0200 Subject: [PATCH 28/32] Build README --- README.md | 70 +++++++++++++++++++++++++++---------------------------- 1 file changed, 35 insertions(+), 35 deletions(-) diff --git a/README.md b/README.md index 384034e5c..041773a7f 100644 --- a/README.md +++ b/README.md @@ -56,7 +56,7 @@ Use `map()` to combine the letter with each partial anagram, then `reduce()` to Base cases are for string `length` equal to `2` or `1`. ```js -var anagrams = s => { +const anagrams = s => { if(s.length <= 2) return s.length === 2 ? [s, s[1] + s[0]] : [s]; return s.split('').reduce( (a,l,i) => { anagrams(s.slice(0,i) + s.slice(i+1)).map( v => a.push(l+v) ); @@ -70,7 +70,7 @@ var anagrams = s => { Use `reduce()` to add each value to an accumulator, initialized with a value of `0`, divide by the `length` of the array. ```js -var average = arr => +const average = arr => arr.reduce( (acc , val) => acc + val, 0) / arr.length; ``` @@ -79,7 +79,7 @@ var average = arr => Use `slice(0,1)` and `toUpperCase()` to capitalize first letter, `slice(1)` to get the rest of the string. ```js -var capitalize = str => str.slice(0, 1).toUpperCase() + str.slice(1); +const capitalize = str => str.slice(0, 1).toUpperCase() + str.slice(1); ``` ### Count occurrences of a value in array @@ -87,7 +87,7 @@ var capitalize = str => str.slice(0, 1).toUpperCase() + str.slice(1); Use `reduce()` to increment a counter each time you encounter the specific value inside the array. ```js -var countOccurrences = (arr, value) => arr.reduce((a, v) => v===value ? a + 1 : a + 0, 0); +const countOccurrences = (arr, value) => arr.reduce((a, v) => v===value ? a + 1 : a + 0, 0); ``` ### Current URL @@ -95,7 +95,7 @@ var countOccurrences = (arr, value) => arr.reduce((a, v) => v===value ? a + 1 : Use `window.location.href` to get current URL. ```js -var currentUrl = _ => window.location.href; +const currentUrl = _ => window.location.href; ``` ### Curry @@ -105,7 +105,7 @@ If the number of provided arguments (`args`) is sufficient, call the passed func Otherwise return a curried function `f` that expects the rest of the arguments. ```js -var curry = f => +const curry = f => (...args) => args.length >= f.length ? f(...args) : (...otherArgs) => curry(f)(...args, ...otherArgs) ``` @@ -115,7 +115,7 @@ var curry = f => Use `filter()` to remove values that are part of `values`, determined using `includes()`. ```js -var difference = (arr, values) => arr.filter(v => !values.includes(v)); +const difference = (arr, values) => arr.filter(v => !values.includes(v)); ``` ### Distance between two points @@ -131,7 +131,7 @@ const distance = (x0, y0, x1, y1) => Math.hypot(x1 - x0, y1 - y0); Use `replace()` to escape special characters. ```js -var escapeRegExp = s => +const escapeRegExp = s => s.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); } ``` @@ -142,7 +142,7 @@ Use `Math.abs()` to extend logic to negative numbers, check using the modulo (`% Return `true` if the number is even, `false` if the number is odd. ```js -var isEven = num => Math.abs(num) % 2 === 0; +const isEven = num => Math.abs(num) % 2 === 0; ``` ### Factorial @@ -161,7 +161,7 @@ Create an empty array of the specific length, initializing the first two values Use `reduce()` to add values into the array, using the sum of the last two values, except for the first two. ```js -var fibonacci = n => +const fibonacci = n => Array.apply(null, [0,1].concat(Array(n-2))).reduce( (acc, val, i) => { acc.push( i>1 ? acc[i-1]+acc[i-2] : val); @@ -184,7 +184,7 @@ Use recursion. Use `reduce()` to get all elements that are not arrays, flatten each element that is an array. ```js -var flatten = arr => +const flatten = arr => arr.reduce( (a, v) => a.concat( Array.isArray(v) ? flatten(v) : v ), []); ``` @@ -207,7 +207,7 @@ 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); +const gcd = (x , y) => !y ? x : gcd(y, x % y); ``` ### Head of list @@ -215,7 +215,7 @@ var gcd = (x , y) => !y ? x : gcd(y, x % y); Return `arr[0]`. ```js -var head = arr => arr[0]; +const head = arr => arr[0]; ``` ### Initial of list @@ -223,7 +223,7 @@ var head = arr => arr[0]; Return `arr.slice(0,-1)`. ```js -var initial = arr => arr.slice(0,-1); +const initial = arr => arr.slice(0,-1); ``` ### Initialize array with range @@ -232,7 +232,7 @@ Use `Array(end-start)` to create an array of the desired length, `map()` to fill You can omit `start` to use a default value of `0`. ```js -var initializeArrayRange = (end, start = 0) => +const initializeArrayRange = (end, start = 0) => Array.apply(null, Array(end-start)).map( (v,i) => i + start ); ``` @@ -242,7 +242,7 @@ Use `Array(n)` to create an array of the desired length, `fill(v)` to fill it wi You can omit `v` to use a default value of `0`. ```js -var initializeArray = (n, v = 0) => +const initializeArray = (n, v = 0) => Array(n).fill(v); ``` @@ -251,7 +251,7 @@ var initializeArray = (n, v = 0) => Return `arr.slice(-1)[0]`. ```js -var last = arr => arr.slice(-1)[0]; +const last = arr => arr.slice(-1)[0]; ``` ### Measure time taken by function @@ -260,7 +260,7 @@ Use `performance.now()` to get start and end time for the function, `console.log First argument is the function name, subsequent arguments are passed to the function. ```js -var timeTaken = (f,...args) => { +const timeTaken = (f,...args) => { var t0 = performance.now(), r = f(...args); console.log(performance.now() - t0); return r; @@ -272,16 +272,16 @@ var timeTaken = (f,...args) => { Use `map()` to create objects for each key-value pair, combine with `Object.assign()`. ```js -var objectFromPairs = arr => +const objectFromPairs = arr => Object.assign(...arr.map( v => {return {[v[0]] : v[1]};} )); ``` ### Powerset -Use `reduce()` combined with `map()` to iterate over elements and combine into an array containing all combinations. +Use `reduce()` combined with `map()` to iterate over elements and combine into an array containing all combinations. ```js -var powerset = arr => +const powerset = arr => arr.reduce( (a,v) => a.concat(a.map( r => [v].concat(r) )), [[]]); ``` @@ -290,7 +290,7 @@ var powerset = arr => Use `Math.random()` to generate a random value, map it to the desired range using multiplication. ```js -var randomInRange = (min, max) => Math.random() * (max - min) + min; +const randomInRange = (min, max) => Math.random() * (max - min) + min; ``` ### Randomize order of array @@ -298,7 +298,7 @@ var randomInRange = (min, max) => Math.random() * (max - min) + min; Use `sort()` to reorder elements, utilizing `Math.random()` to randomize the sorting. ```js -var randomizeOrder = arr => arr.sort( (a,b) => Math.random() >= 0.5 ? -1 : 1) +const randomizeOrder = arr => arr.sort( (a,b) => Math.random() >= 0.5 ? -1 : 1) ``` ### Redirect to URL @@ -307,7 +307,7 @@ Use `window.location.href` or `window.location.replace()` to redirect to `url`. Pass a second argument to simulate a link click (`true` - default) or an HTTP redirect (`false`). ```js -var redirect = (url, asLink = true) => +const redirect = (url, asLink = true) => asLink ? window.location.href = url : window.location.replace(url); ``` @@ -317,7 +317,7 @@ Use array destructuring and `Array.reverse()` to reverse the order of the charac Combine characters to get a string using `join('')`. ```js -var reverseString = str => [...str].reverse().join(''); +const reverseString = str => [...str].reverse().join(''); ``` ### RGB to hexadecimal @@ -326,7 +326,7 @@ Convert each value to a hexadecimal string, using `toString(16)`, then `padStart Combine values using `join('')`. ```js -var rgbToHex = (r, g, b) => +const rgbToHex = (r, g, b) => [r,g,b].map( v => v.toString(16).padStart(2,'0')).join(''); ``` @@ -336,8 +336,8 @@ Get distance from top using `document.documentElement.scrollTop` or `document.bo Scroll by a fraction of the distance from top. Use `window.requestAnimationFrame()` to animate the scrolling. ```js -var scrollToTop = _ => { - var c = document.documentElement.scrollTop || document.body.scrollTop; +const scrollToTop = _ => { + const c = document.documentElement.scrollTop || document.body.scrollTop; if(c > 0) { window.requestAnimationFrame(scrollToTop); window.scrollTo(0, c - c/8); @@ -350,7 +350,7 @@ var scrollToTop = _ => { Use `filter()` to remove values that are not part of `values`, determined using `includes()`. ```js -var difference = (arr, values) => arr.filter(v => values.includes(v)); +const difference = (arr, values) => arr.filter(v => values.includes(v)); ``` ### Sort characters in string (alphabetical) @@ -358,7 +358,7 @@ var difference = (arr, values) => arr.filter(v => values.includes(v)); Split the string using `split('')`, `sort()` utilizing `localeCompare()`, recombine using `join('')`. ```js -var sortCharactersInString = str => +const sortCharactersInString = str => str.split('').sort( (a,b) => a.localeCompare(b) ).join(''); ``` @@ -367,7 +367,7 @@ var sortCharactersInString = str => Use `reduce()` to add each value to an accumulator, initialized with a value of `0`. ```js -var sum = arr => +const sum = arr => arr.reduce( (acc , val) => acc + val, 0); ``` @@ -384,7 +384,7 @@ Use array destructuring to swap values between two variables. Return `arr.slice(1)`. ```js -var tail = arr => arr.slice(1); +const tail = arr => arr.slice(1); ``` ### Unique values of array @@ -403,7 +403,7 @@ Combine all key-value pairs into a single object using `Object.assign()` and the Pass `location.search` as the argument to apply to the current `url`. ```js -var getUrlParameters = url => +const getUrlParameters = url => Object.assign(...url.match(/([^?=&]+)(=([^&]*))?/g).map(m => {[f,v] = m.split('='); return {[f]:v}})); ``` @@ -412,7 +412,7 @@ var getUrlParameters = url => Use `crypto` API to generate a UUID, compliant with [RFC4122](https://www.ietf.org/rfc/rfc4122.txt) version 4. ```js -var uuid = _ => +const uuid = _ => ( [1e7]+-1e3+-4e3+-8e3+-1e11 ).replace( /[018]/g, c => (c ^ crypto.getRandomValues(new Uint8Array(1))[0] & 15 >> c / 4).toString(16) ) @@ -424,7 +424,7 @@ Use `!isNaN` in combination with `parseFloat()` to check if the argument is a nu Use `isFinite()` to check if the number is finite. ```js -var validateNumber = n => !isNaN(parseFloat(n)) && isFinite(n); +const validateNumber = n => !isNaN(parseFloat(n)) && isFinite(n); ``` ## Credits From c074a196e63cb790cdd30e3103090787bb375574 Mon Sep 17 00:00:00 2001 From: Angelos Chalaris Date: Tue, 12 Dec 2017 15:38:34 +0200 Subject: [PATCH 29/32] Build README --- README.md | 18 +++++++++--------- .../capitalize-first-letter-of-every-word.md | 7 +++++++ 2 files changed, 16 insertions(+), 9 deletions(-) create mode 100644 snippets/capitalize-first-letter-of-every-word.md diff --git a/README.md b/README.md index efe80e720..1e1fe010a 100644 --- a/README.md +++ b/README.md @@ -10,8 +10,8 @@ * [Anagrams of string (with duplicates)](#anagrams-of-string-with-duplicates) * [Average of array of numbers](#average-of-array-of-numbers) -* [Capitalize first letter](#capitalize-first-letter) * [Capitalize first letter of every word](#capitalize-first-letter-of-every-word) +* [Capitalize first letter](#capitalize-first-letter) * [Count occurrences of a value in array](#count-occurrences-of-a-value-in-array) * [Current URL](#current-url) * [Curry](#curry) @@ -75,6 +75,14 @@ const average = arr => arr.reduce( (acc , val) => acc + val, 0) / arr.length; ``` +### Capitalize first letter of every word + +Use `replace()` to match the first character of each word and `toUpperCase()` to capitalize it. + +```js +var capitalizeEveryWord = str => str.replace(/\b[a-z]/g, char => char.toUpperCase()); +``` + ### Capitalize first letter Use `slice(0,1)` and `toUpperCase()` to capitalize first letter, `slice(1)` to get the rest of the string. @@ -83,16 +91,8 @@ Use `slice(0,1)` and `toUpperCase()` to capitalize first letter, `slice(1)` to g const capitalize = str => str.slice(0, 1).toUpperCase() + str.slice(1); ``` -### Capitalize first letter of every word - -Use `replace()` to match the first character of each word and `toUpperCase()` to capitalize it. - -```js -var capitalizeEveryWord = str => str.replace(/\b[a-z]/g, char => char.toUpperCase()); -``` ### Count occurrences of a value in array - Use `reduce()` to increment a counter each time you encounter the specific value inside the array. ```js diff --git a/snippets/capitalize-first-letter-of-every-word.md b/snippets/capitalize-first-letter-of-every-word.md new file mode 100644 index 000000000..b1ce2d44a --- /dev/null +++ b/snippets/capitalize-first-letter-of-every-word.md @@ -0,0 +1,7 @@ +### Capitalize first letter of every word + +Use `replace()` to match the first character of each word and `toUpperCase()` to capitalize it. + +```js +var capitalizeEveryWord = str => str.replace(/\b[a-z]/g, char => char.toUpperCase()); +``` From d7856f0b40227df0e74a8c058d2a5ec4f05556a9 Mon Sep 17 00:00:00 2001 From: Angelos Chalaris Date: Tue, 12 Dec 2017 15:42:03 +0200 Subject: [PATCH 30/32] Resolves #16 --- README.md | 4 +++- snippets/capitalize-first-letter.md | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 1e1fe010a..c947a258d 100644 --- a/README.md +++ b/README.md @@ -86,9 +86,11 @@ var capitalizeEveryWord = str => str.replace(/\b[a-z]/g, char => char.toUpperCas ### Capitalize first letter Use `slice(0,1)` and `toUpperCase()` to capitalize first letter, `slice(1)` to get the rest of the string. +Omit the `lowerRest` parameter to keep the rest of the string intact, or set it to `true` to convert to lower case. ```js -const capitalize = str => str.slice(0, 1).toUpperCase() + str.slice(1); +const capitalize = (str, lowerRest = false) => + str.slice(0, 1).toUpperCase() + (lowerRest? str.slice(1).toLowerCase() : str.slice(1)); ``` ### Count occurrences of a value in array diff --git a/snippets/capitalize-first-letter.md b/snippets/capitalize-first-letter.md index 773cc1343..f6b933998 100644 --- a/snippets/capitalize-first-letter.md +++ b/snippets/capitalize-first-letter.md @@ -1,7 +1,9 @@ ### Capitalize first letter Use `slice(0,1)` and `toUpperCase()` to capitalize first letter, `slice(1)` to get the rest of the string. +Omit the `lowerRest` parameter to keep the rest of the string intact, or set it to `true` to convert to lower case. ```js -const capitalize = str => str.slice(0, 1).toUpperCase() + str.slice(1); +const capitalize = (str, lowerRest = false) => + str.slice(0, 1).toUpperCase() + (lowerRest? str.slice(1).toLowerCase() : str.slice(1)); ``` From f2de64881bd163de992cac3ebab92d5bf8479714 Mon Sep 17 00:00:00 2001 From: Angelos Chalaris Date: Tue, 12 Dec 2017 15:43:03 +0200 Subject: [PATCH 31/32] Keyword consistency in capitalize-first-letter-of-every-word --- README.md | 2 +- snippets/capitalize-first-letter-of-every-word.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index c947a258d..44ffd891e 100644 --- a/README.md +++ b/README.md @@ -80,7 +80,7 @@ const average = arr => Use `replace()` to match the first character of each word and `toUpperCase()` to capitalize it. ```js -var capitalizeEveryWord = str => str.replace(/\b[a-z]/g, char => char.toUpperCase()); +const capitalizeEveryWord = str => str.replace(/\b[a-z]/g, char => char.toUpperCase()); ``` ### Capitalize first letter diff --git a/snippets/capitalize-first-letter-of-every-word.md b/snippets/capitalize-first-letter-of-every-word.md index b1ce2d44a..6c93eecd4 100644 --- a/snippets/capitalize-first-letter-of-every-word.md +++ b/snippets/capitalize-first-letter-of-every-word.md @@ -3,5 +3,5 @@ Use `replace()` to match the first character of each word and `toUpperCase()` to capitalize it. ```js -var capitalizeEveryWord = str => str.replace(/\b[a-z]/g, char => char.toUpperCase()); +const capitalizeEveryWord = str => str.replace(/\b[a-z]/g, char => char.toUpperCase()); ``` From ffadf99ef20984d49467d5d672886c7fcd04da21 Mon Sep 17 00:00:00 2001 From: Aaron Baker Date: Tue, 12 Dec 2017 13:47:24 +0000 Subject: [PATCH 32/32] Fix link in CONTRIBUTING.md Fix the bracket order of the Github Flavored Markdown link in the CONTRIBUTING.md file --- CONTRIBUTING.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 030eb5475..7e90497d5 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -8,6 +8,6 @@ You can contribute to **30 seconds of code** by sending pull requests for snippe - Snippets must be explained to a certain extent in the description above them. Make sure to include what functions you are using and why. - Snippets must solve real-world problems and should be abstract enough to use in different scenarios. This is highly subjective, so send them in anyways. - Snippets *should* be written in ES6 if possible. -- Snippet files must follow the anchor name conventions of (GitHub Flavored Markdown)[https://github.github.com/gfm/], so that the `builder.js` can build the links for the list. +- Snippet files must follow the anchor name conventions of [GitHub Flavored Markdown](https://github.github.com/gfm/), so that the `builder.js` can build the links for the list. - Use the [template](snippet-template.md) to format your snippets. - If possible, provide test cases in your Pull Request (link or comment), so that it's easier to verify that each snippet is working.