From 7402f8b2aa7d575e5d3033f47fe0b2ce46e3d57a 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 8ff3a7dfa3ed1a4424ee71da9a28efaa7153b222 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 ea7c51ed7c4f0d9586ed55bd31e214ec80546a48 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 08978c8b322194beb354a3b24dab4f323eec753b 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 649d1c3ae0ba7ae263a3062d977b99d811a016fc 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 1992fdfcaf7d7327bb432c92b576c227524eea97 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 0b9d02b65b6a436010ea47e782f53bd7c1934343 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 a4675c1e8683d52ba1c5375a73ae2bfec1d8c831 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 4236e94681e12022b7a534befa460b5977c29869 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 018ebcc6d29fc9e095c87650b42777675cb9a968 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 37284509a437320e0fa8dd4b9f2356f886b6b232 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 cfb90b0a8d0777b3a5696eee341b18bdc08fe808 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 f828c18bfbe17471bcfddf2ccd952c659780d432 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 282bf85f4fcf94c6019919569ffd9f0d63d0c306 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 849297440293defb465f53e8e2c5902d4b9fe874 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 00ac4b38e3523a0ab2f28b8c2fa91f04ebbffce3 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 8743d1ae63fc925ce3c7c66756abb6c047c01521 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 feb82f8a66dd01a5f812063c18574400d94ed1b6 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 b9e45241f2258f4618b72121c8ece845545025d6 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 24f101042a1fd6acfbebb9a5ac53106b3ea07b07 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 65bdb7e6cb5e4c986b73f08ab375e22a32e0c069 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 31f2d0698c841edd070e518ee0b4f4c68518e82a 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 d372b7dbbe63e4f48692dd40d8b2b470f4ff9926 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 42ed98c9f423d4e11d24e059589e553ec23752cb 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 f2759821002bae5ddec2c95a5c064f87f91427be 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 917c0095eba60c52f5901b22489426aa9f383bbd 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 f4b2dc150e35070fc93ac849a8dd96a6e52bca06 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 ee01752fb52e19f48585df56286a62fc3a8c58eb 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 c83394b44a7376b67903327e5bd70a60187d076d 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 cb7283ca56219f5bcc8d5ea316c81198d9a81d55 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 fa83aa07bd74c6c2fe425e20388de2eaaf37fb36 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 c0be68d6fd0b8bc5bb450b8278544a4ee7df387b 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.