From 8de8fd93aa605511146ba7099861674f5383baf7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stefan=20Feje=C5=A1?= Date: Mon, 25 Dec 2017 13:26:14 +0100 Subject: [PATCH 01/13] update snippet-template.md --- snippet-template.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/snippet-template.md b/snippet-template.md index f95eabc3d..c21926208 100644 --- a/snippet-template.md +++ b/snippet-template.md @@ -7,5 +7,8 @@ Explain briefly how the snippet works. ```js const functionName = arguments => {functionBody} -// functionName(sampleInput) -> sampleOutput +``` + +```js +functionName() ``` \ No newline at end of file From 9b57350525737a784787a2411d3ebd5ce24adf20 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stefan=20Feje=C5=A1?= Date: Mon, 25 Dec 2017 13:59:23 +0100 Subject: [PATCH 02/13] update snippets 1-15 --- snippets/anagrams.md | 5 ++++- snippets/arrayAverage.md | 5 ++++- snippets/arrayGcd.md | 7 +++++-- snippets/arrayLcm.md | 9 ++++++--- snippets/arrayMax.md | 5 ++++- snippets/arrayMin.md | 5 ++++- snippets/arraySum.md | 5 ++++- snippets/arrayToHtmlList.md | 5 ++++- snippets/bottomVisible.md | 3 +++ snippets/call.md | 7 ++++--- snippets/capitalize.md | 7 +++++-- snippets/capitalizeEveryWord.md | 5 ++++- snippets/chainAsync.md | 5 +++-- snippets/chunk.md | 5 ++++- snippets/clampNumber.md | 15 +++++++++------ 15 files changed, 67 insertions(+), 26 deletions(-) diff --git a/snippets/anagrams.md b/snippets/anagrams.md index b89194564..2238c4a5f 100644 --- a/snippets/anagrams.md +++ b/snippets/anagrams.md @@ -13,5 +13,8 @@ const anagrams = str => { return str.split('').reduce((acc, letter, i) => acc.concat(anagrams(str.slice(0, i) + str.slice(i + 1)).map(val => letter + val)), []); }; -// anagrams('abc') -> ['abc','acb','bac','bca','cab','cba'] +``` + +```js +anagrams('abc') -> ['abc','acb','bac','bca','cab','cba'] ``` diff --git a/snippets/arrayAverage.md b/snippets/arrayAverage.md index 74c8cef97..92c54518b 100644 --- a/snippets/arrayAverage.md +++ b/snippets/arrayAverage.md @@ -6,5 +6,8 @@ Use `Array.reduce()` to add each value to an accumulator, initialized with a val ```js const arrayAverage = arr => arr.reduce((acc, val) => acc + val, 0) / arr.length; -// arrayAverage([1,2,3]) -> 2 +``` + +```js +arrayAverage([1,2,3]) -> 2 ``` diff --git a/snippets/arrayGcd.md b/snippets/arrayGcd.md index 39a154059..df657f31a 100644 --- a/snippets/arrayGcd.md +++ b/snippets/arrayGcd.md @@ -9,6 +9,9 @@ const arrayGcd = arr =>{ const gcd = (x, y) => !y ? x : gcd(y, x % y); return arr.reduce((a,b) => gcd(a,b)); } -// arrayGcd([1,2,3,4,5]) -> 1 -// arrayGcd([4,8,12]) -> 4 +``` + +```js +arrayGcd([1,2,3,4,5]) -> 1 +arrayGcd([4,8,12]) -> 4 ``` diff --git a/snippets/arrayLcm.md b/snippets/arrayLcm.md index 8d4e593fb..fd82831f5 100644 --- a/snippets/arrayLcm.md +++ b/snippets/arrayLcm.md @@ -7,9 +7,12 @@ Use `Array.reduce()` and the `lcm` formula (uses recursion) to calculate the low ```js const arrayLcm = arr =>{ const gcd = (x, y) => !y ? x : gcd(y, x % y); - const lcm = (x, y) => (x*y)/gcd(x, y); + const lcm = (x, y) => (x*y)/gcd(x, y); return arr.reduce((a,b) => lcm(a,b)); } -// arrayLcm([1,2,3,4,5]) -> 60 -// arrayLcm([4,8,12]) -> 24 +``` + +```js +arrayLcm([1,2,3,4,5]) -> 60 +arrayLcm([4,8,12]) -> 24 ``` diff --git a/snippets/arrayMax.md b/snippets/arrayMax.md index 0c0022996..3e1b5c5e8 100644 --- a/snippets/arrayMax.md +++ b/snippets/arrayMax.md @@ -6,5 +6,8 @@ Use `Math.max()` combined with the spread operator (`...`) to get the maximum va ```js const arrayMax = arr => Math.max(...arr); -// arrayMax([10, 1, 5]) -> 10 +``` + +```js +arrayMax([10, 1, 5]) -> 10 ``` diff --git a/snippets/arrayMin.md b/snippets/arrayMin.md index 5bdd95559..171d60977 100644 --- a/snippets/arrayMin.md +++ b/snippets/arrayMin.md @@ -6,5 +6,8 @@ Use `Math.min()` combined with the spread operator (`...`) to get the minimum va ```js const arrayMin = arr => Math.min(...arr); -// arrayMin([10, 1, 5]) -> 1 +``` + +```js +arrayMin([10, 1, 5]) -> 1 ``` diff --git a/snippets/arraySum.md b/snippets/arraySum.md index 265c7fc60..9c3178d35 100644 --- a/snippets/arraySum.md +++ b/snippets/arraySum.md @@ -6,5 +6,8 @@ Use `Array.reduce()` to add each value to an accumulator, initialized with a val ```js const arraySum = arr => arr.reduce((acc, val) => acc + val, 0); -// arraySum([1,2,3,4]) -> 10 +``` + +```js +arraySum([1,2,3,4]) -> 10 ``` diff --git a/snippets/arrayToHtmlList.md b/snippets/arrayToHtmlList.md index bf5ba5721..27a66369f 100644 --- a/snippets/arrayToHtmlList.md +++ b/snippets/arrayToHtmlList.md @@ -6,5 +6,8 @@ Use `Array.map()` and `document.querySelector()` to create a list of html tags. ```js const arrayToHtmlList = (arr, listID) => arr.map(item => document.querySelector("#"+listID).innerHTML+=`
  • ${item}
  • `); -// arrayToHtmlList(['item 1', 'item 2'],'myListID') +``` + +```js +arrayToHtmlList(['item 1', 'item 2'],'myListID') ``` diff --git a/snippets/bottomVisible.md b/snippets/bottomVisible.md index adac44881..485f1879f 100644 --- a/snippets/bottomVisible.md +++ b/snippets/bottomVisible.md @@ -7,5 +7,8 @@ Use `scrollY`, `scrollHeight` and `clientHeight` to determine if the bottom of t ```js const bottomVisible = () => document.documentElement.clientHeight + window.scrollY >= (document.documentElement.scrollHeight || document.documentElement.clientHeight); +``` + +```js // bottomVisible() -> true ``` diff --git a/snippets/call.md b/snippets/call.md index a7aec4808..e30b395e0 100644 --- a/snippets/call.md +++ b/snippets/call.md @@ -6,9 +6,10 @@ Use a closure to call a stored key with stored arguments. ```js const call = ( key, ...args ) => context => context[ key ]( ...args ); -/* +``` + +```js Promise.resolve( [ 1, 2, 3 ] ).then( call('map', x => 2 * x ) ).then( console.log ) //[ 2, 4, 6 ] const map = call.bind(null, 'map') Promise.resolve( [ 1, 2, 3 ] ).then( map( x => 2 * x ) ).then( console.log ) //[ 2, 4, 6 ] -*/ -``` +``` diff --git a/snippets/capitalize.md b/snippets/capitalize.md index d085a3034..435b69202 100644 --- a/snippets/capitalize.md +++ b/snippets/capitalize.md @@ -8,6 +8,9 @@ Omit the `lowerRest` parameter to keep the rest of the string intact, or set it ```js const capitalize = ([first,...rest], lowerRest = false) => first.toUpperCase() + (lowerRest ? rest.join('').toLowerCase() : rest.join('')); -// capitalize('myName') -> 'MyName' -// capitalize('myName', true) -> 'Myname' +``` + +```js +capitalize('fooBar') -> 'FooBar' +capitalize('fooBar', true) -> 'Foobar' ``` diff --git a/snippets/capitalizeEveryWord.md b/snippets/capitalizeEveryWord.md index bfaaf00b6..b607f8f58 100644 --- a/snippets/capitalizeEveryWord.md +++ b/snippets/capitalizeEveryWord.md @@ -6,5 +6,8 @@ Use `replace()` to match the first character of each word and `toUpperCase()` to ```js const capitalizeEveryWord = str => str.replace(/\b[a-z]/g, char => char.toUpperCase()); -// capitalizeEveryWord('hello world!') -> 'Hello World!' +``` + +```js +capitalizeEveryWord('hello world!') -> 'Hello World!' ``` diff --git a/snippets/chainAsync.md b/snippets/chainAsync.md index 66fb8a6ab..1fb4067c8 100644 --- a/snippets/chainAsync.md +++ b/snippets/chainAsync.md @@ -6,11 +6,12 @@ Loop through an array of functions containing asynchronous events, calling `next ```js const chainAsync = fns => { let curr = 0; const next = () => fns[curr++](next); next(); }; -/* +``` + +```js chainAsync([ next => { console.log('0 seconds'); setTimeout(next, 1000); }, next => { console.log('1 second'); setTimeout(next, 1000); }, next => { console.log('2 seconds'); } ]) -*/ ``` diff --git a/snippets/chunk.md b/snippets/chunk.md index 8ad2c3ced..122712351 100644 --- a/snippets/chunk.md +++ b/snippets/chunk.md @@ -9,5 +9,8 @@ If the original array can't be split evenly, the final chunk will contain the re ```js const chunk = (arr, size) => Array.from({length: Math.ceil(arr.length / size)}, (v, i) => arr.slice(i * size, i * size + size)); -// chunk([1,2,3,4,5], 2) -> [[1,2],[3,4],[5]] +``` + +```js +chunk([1,2,3,4,5], 2) -> [[1,2],[3,4],[5]] ``` diff --git a/snippets/clampNumber.md b/snippets/clampNumber.md index d1bf9d64f..907b54729 100644 --- a/snippets/clampNumber.md +++ b/snippets/clampNumber.md @@ -2,16 +2,19 @@ Clamps `num` within the inclusive `lower` and `upper` bounds. -If `lower` is greater than `upper`, swap them. -If `num` falls within the range, return `num`. +If `lower` is greater than `upper`, swap them. +If `num` falls within the range, return `num`. Otherwise, return the nearest number in the range. ```js const clampNumber = (num, lower, upper) => { if(lower > upper) upper = [lower, lower = upper][0]; - return (num>=lower && num<=upper) ? num : ((num < lower) ? lower : upper) + return (num>=lower && num<=upper) ? num : ((num < lower) ? lower : upper) } -// clampNumber(2, 3, 5) -> 3 -// clampNumber(1, -1, -5) -> -1 -// clampNumber(3, 2, 4) -> 3 +``` + +```js +clampNumber(2, 3, 5) -> 3 +clampNumber(1, -1, -5) -> -1 +clampNumber(3, 2, 4) -> 3 ``` From 823aa0c305e79a79365e9c7dd0b28d0b50c73598 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stefan=20Feje=C5=A1?= Date: Mon, 25 Dec 2017 14:05:36 +0100 Subject: [PATCH 03/13] update snippets 16-31 --- snippets/cleanObj.md | 11 ++++++----- snippets/coalesce.md | 5 ++++- snippets/coalesceFactory.md | 7 +++++-- snippets/collatz.md | 7 +++++-- snippets/collectInto.md | 7 ++++--- snippets/compact.md | 5 ++++- snippets/compose.md | 5 +++-- snippets/countOccurrences.md | 5 ++++- snippets/countVowels.md | 7 +++++-- snippets/currentURL.md | 5 ++++- snippets/curry.md | 7 +++++-- snippets/deepFlatten.md | 5 ++++- snippets/detectDeviceType.md | 7 +++++-- snippets/difference.md | 5 ++++- snippets/differenceWith.md | 5 ++++- 15 files changed, 66 insertions(+), 27 deletions(-) diff --git a/snippets/cleanObj.md b/snippets/cleanObj.md index f2a915719..b8377fd0d 100644 --- a/snippets/cleanObj.md +++ b/snippets/cleanObj.md @@ -15,9 +15,10 @@ const cleanObj = (obj, keysToKeep = [], childIndicator) => { } }) } -/* - const testObj = {a: 1, b: 2, children: {a: 1, b: 2}} - cleanObj(testObj, ["a"],"children") - console.log(testObj)// { a: 1, children : { a: 1}} -*/ +``` + +```js +const testObj = {a: 1, b: 2, children: {a: 1, b: 2}} +cleanObj(testObj, ["a"],"children") +console.log(testObj) // { a: 1, children : { a: 1}} ``` diff --git a/snippets/coalesce.md b/snippets/coalesce.md index 22271dc68..9762a363f 100644 --- a/snippets/coalesce.md +++ b/snippets/coalesce.md @@ -6,5 +6,8 @@ Use `Array.find()` to return the first non `null`/`undefined` argument. ```js const coalesce = (...args) => args.find(_ => ![undefined, null].includes(_)) -// coalesce(null,undefined,"",NaN, "Waldo") -> "" +``` + +```js +coalesce(null,undefined,"",NaN, "Waldo") -> "" ``` diff --git a/snippets/coalesceFactory.md b/snippets/coalesceFactory.md index 4b9a78924..39bb98714 100644 --- a/snippets/coalesceFactory.md +++ b/snippets/coalesceFactory.md @@ -6,6 +6,9 @@ Use `Array.find()` to return the first argument that returns `true` from the pro ```js const coalesceFactory = valid => (...args) => args.find(valid); -// const customCoalesce = coalesceFactory(_ => ![null, undefined, "", NaN].includes(_)) -// customCoalesce(undefined, null, NaN, "", "Waldo") //-> "Waldo" +``` + +```js +const customCoalesce = coalesceFactory(_ => ![null, undefined, "", NaN].includes(_)) +customCoalesce(undefined, null, NaN, "", "Waldo") // "Waldo" ``` diff --git a/snippets/collatz.md b/snippets/collatz.md index 8b8903886..fc05b2a5d 100644 --- a/snippets/collatz.md +++ b/snippets/collatz.md @@ -6,6 +6,9 @@ If `n` is even, return `n/2`. Otherwise, return `3n+1`. ```js const collatz = n => (n % 2 == 0) ? (n / 2) : (3 * n + 1); -// collatz(8) --> 4 -// collatz(5) --> 16 +``` + +```js +collatz(8) -> 4 +collatz(5) -> 16 ``` diff --git a/snippets/collectInto.md b/snippets/collectInto.md index c9a823d3d..141a13fa2 100644 --- a/snippets/collectInto.md +++ b/snippets/collectInto.md @@ -6,11 +6,12 @@ Given a function, return a closure that collects all inputs into an array-accept ```js const collectInto = fn => ( ...args ) => fn( args ); -/* +``` + +```js const Pall = collectInto( Promise.all.bind(Promise) ) let p1 = Promise.resolve(1) let p2 = Promise.resolve(2) let p3 = new Promise((resolve) => setTimeout(resolve,2000,3)) Pall(p1, p2, p3).then(console.log) -*/ -``` +``` diff --git a/snippets/compact.md b/snippets/compact.md index d09160afe..2a9528772 100644 --- a/snippets/compact.md +++ b/snippets/compact.md @@ -6,5 +6,8 @@ Use `Array.filter()` to filter out falsey values (`false`, `null`, `0`, `""`, `u ```js const compact = arr => arr.filter(Boolean); -// compact([0, 1, false, 2, '', 3, 'a', 'e'*23, NaN, 's', 34]) -> [ 1, 2, 3, 'a', 's', 34 ] +``` + +```js +compact([0, 1, false, 2, '', 3, 'a', 'e'*23, NaN, 's', 34]) -> [ 1, 2, 3, 'a', 's', 34 ] ``` diff --git a/snippets/compose.md b/snippets/compose.md index f6b1ce2ea..dfd40f814 100644 --- a/snippets/compose.md +++ b/snippets/compose.md @@ -7,10 +7,11 @@ The last (rightmost) function can accept one or more arguments; the remaining fu ```js const compose = (...fns) => fns.reduce((f, g) => (...args) => f(g(...args))); -/* +``` + +```js const add5 = x => x + 5 const multiply = (x, y) => x * y const multiplyAndAdd5 = compose(add5, multiply) multiplyAndAdd5(5, 2) -> 15 -*/ ``` diff --git a/snippets/countOccurrences.md b/snippets/countOccurrences.md index f55de0a62..2c1463b02 100644 --- a/snippets/countOccurrences.md +++ b/snippets/countOccurrences.md @@ -6,5 +6,8 @@ Use `Array.reduce()` to increment a counter each time you encounter the specific ```js const countOccurrences = (arr, value) => arr.reduce((a, v) => v === value ? a + 1 : a + 0, 0); -// countOccurrences([1,1,2,1,2,3], 1) -> 3 +``` + +```js +countOccurrences([1,1,2,1,2,3], 1) -> 3 ``` diff --git a/snippets/countVowels.md b/snippets/countVowels.md index c91f09442..47c683eb8 100644 --- a/snippets/countVowels.md +++ b/snippets/countVowels.md @@ -6,6 +6,9 @@ Use a regular expression to count the number of vowels `(A, E, I, O, U)` in a `s ```js const countVowels = str => (str.match(/[aeiou]/ig) || []).length; -// countVowels('foobar') -> 3 -// countVowels('gym') -> 0 +``` + +```js +countVowels('foobar') -> 3 +countVowels('gym') -> 0 ``` diff --git a/snippets/currentURL.md b/snippets/currentURL.md index a6482a689..7e8965d92 100644 --- a/snippets/currentURL.md +++ b/snippets/currentURL.md @@ -6,5 +6,8 @@ Use `window.location.href` to get current URL. ```js const currentURL = () => window.location.href; -// currentUrl() -> 'https://google.com' +``` + +```js +currentUrl() -> 'https://google.com' ``` diff --git a/snippets/curry.md b/snippets/curry.md index c88e3418a..f1806d395 100644 --- a/snippets/curry.md +++ b/snippets/curry.md @@ -12,6 +12,9 @@ const curry = (fn, arity = fn.length, ...args) => arity <= args.length ? fn(...args) : curry.bind(null, fn, arity, ...args); -// curry(Math.pow)(2)(10) -> 1024 -// curry(Math.min, 3)(10)(50)(2) -> 2 +``` + +```js +curry(Math.pow)(2)(10) -> 1024 +curry(Math.min, 3)(10)(50)(2) -> 2 ``` diff --git a/snippets/deepFlatten.md b/snippets/deepFlatten.md index c6f29fb9b..cea888992 100644 --- a/snippets/deepFlatten.md +++ b/snippets/deepFlatten.md @@ -8,5 +8,8 @@ Recursively flatten each element that is an array. ```js const deepFlatten = arr => [].concat(...arr.map(v => Array.isArray(v) ? deepFlatten(v) : v)); -// deepFlatten([1,[2],[[3],4],5]) -> [1,2,3,4,5] +``` + +```js +deepFlatten([1,[2],[[3],4],5]) -> [1,2,3,4,5] ``` diff --git a/snippets/detectDeviceType.md b/snippets/detectDeviceType.md index b2822a458..64888d44e 100644 --- a/snippets/detectDeviceType.md +++ b/snippets/detectDeviceType.md @@ -6,6 +6,9 @@ Use a regular expression to test the `navigator.userAgent` property to figure ou ```js const detectDeviceType = () => /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent) ? "Mobile" : "Desktop"; -// detectDeviceType() -> "Mobile" -// detectDeviceType() -> "Desktop" +``` + +```js +detectDeviceType() -> "Mobile" +detectDeviceType() -> "Desktop" ``` diff --git a/snippets/difference.md b/snippets/difference.md index e78a73340..dce891e60 100644 --- a/snippets/difference.md +++ b/snippets/difference.md @@ -6,5 +6,8 @@ Create a `Set` from `b`, then use `Array.filter()` on `a` to only keep values no ```js const difference = (a, b) => { const s = new Set(b); return a.filter(x => !s.has(x)); }; -// difference([1,2,3], [1,2,4]) -> [3] +``` + +```js +difference([1,2,3], [1,2,4]) -> [3] ``` diff --git a/snippets/differenceWith.md b/snippets/differenceWith.md index ba4aac0ec..c199a62bd 100644 --- a/snippets/differenceWith.md +++ b/snippets/differenceWith.md @@ -6,5 +6,8 @@ Use `Array.filter()` and `Array.find()` to find the appropriate values. ```js const differenceWith = (arr, val, comp) => arr.filter(a => !val.find(b => comp(a, b))) -// differenceWith([1, 1.2, 1.5, 3], [1.9, 3], (a,b) => Math.round(a) == Math.round(b)) -> [1, 1.2] +``` + +```js +differenceWith([1, 1.2, 1.5, 3], [1.9, 3], (a,b) => Math.round(a) == Math.round(b)) -> [1, 1.2] ``` From 62618883bfa716316c38a756bd4d221eb2e8945e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stefan=20Feje=C5=A1?= Date: Mon, 25 Dec 2017 14:10:38 +0100 Subject: [PATCH 04/13] update snippets 32-47 --- snippets/digitize.md | 5 ++++- snippets/distance.md | 5 ++++- snippets/distinctValuesOfArray.md | 5 ++++- snippets/dropElements.md | 5 ++++- snippets/dropRight.md | 9 ++++++--- snippets/elementIsVisibleInViewport.md | 9 ++++++--- snippets/escapeRegExp.md | 5 ++++- snippets/everyNth.md | 5 ++++- snippets/extendHex.md | 7 +++++-- snippets/factorial.md | 5 ++++- snippets/fibonacci.md | 5 ++++- snippets/fibonacciCountUntilNum.md | 5 ++++- snippets/fibonacciUntilNum.md | 5 ++++- snippets/filterNonUnique.md | 5 ++++- snippets/flatten.md | 5 ++++- 15 files changed, 65 insertions(+), 20 deletions(-) diff --git a/snippets/digitize.md b/snippets/digitize.md index f856c8369..b9d6cffbd 100644 --- a/snippets/digitize.md +++ b/snippets/digitize.md @@ -7,5 +7,8 @@ Use `Array.map()` and `parseInt()` to transform each value to an integer. ```js const digitize = n => [...''+n].map(i => parseInt(i)); -// digitize(2334) -> [2, 3, 3, 4] +``` + +```js +differenceWith([1, 1.2, 1.5, 3], [1.9, 3], (a,b) => Math.round(a) == Math.round(b)) -> [1, 1.2] ``` diff --git a/snippets/distance.md b/snippets/distance.md index 5595ef188..543c763a6 100644 --- a/snippets/distance.md +++ b/snippets/distance.md @@ -6,5 +6,8 @@ Use `Math.hypot()` to calculate the Euclidean distance between two points. ```js const distance = (x0, y0, x1, y1) => Math.hypot(x1 - x0, y1 - y0); -// distance(1,1, 2,3) -> 2.23606797749979 +``` + +```js +distance(1,1, 2,3) -> 2.23606797749979 ``` diff --git a/snippets/distinctValuesOfArray.md b/snippets/distinctValuesOfArray.md index 24c0c60c0..374e24cef 100644 --- a/snippets/distinctValuesOfArray.md +++ b/snippets/distinctValuesOfArray.md @@ -6,5 +6,8 @@ Use ES6 `Set` and the `...rest` operator to discard all duplicated values. ```js const distinctValuesOfArray = arr => [...new Set(arr)]; -// distinctValuesOfArray([1,2,2,3,4,4,5]) -> [1,2,3,4,5] +``` + +```js +distinctValuesOfArray([1,2,2,3,4,4,5]) -> [1,2,3,4,5] ``` diff --git a/snippets/dropElements.md b/snippets/dropElements.md index adc81d79d..064a16d22 100644 --- a/snippets/dropElements.md +++ b/snippets/dropElements.md @@ -10,5 +10,8 @@ const dropElements = (arr, func) => { while (arr.length > 0 && !func(arr[0])) arr = arr.slice(1); return arr; }; -// dropElements([1, 2, 3, 4], n => n >= 3) -> [3,4] +``` + +```js +dropElements([1, 2, 3, 4], n => n >= 3) -> [3,4] ``` diff --git a/snippets/dropRight.md b/snippets/dropRight.md index a39613a14..11d30d198 100644 --- a/snippets/dropRight.md +++ b/snippets/dropRight.md @@ -6,7 +6,10 @@ Use `Array.slice()` to slice the remove the specified number of elements from th ```js const dropRight = (arr, n = 1) => arr.slice(0, -n); -//dropRight([1,2,3]) -> [1,2] -//dropRight([1,2,3], 2) -> [1] -//dropRight([1,2,3], 42) -> [] +``` + +```js +dropRight([1,2,3]) -> [1,2] +dropRight([1,2,3], 2) -> [1] +dropRight([1,2,3], 42) -> [] ``` diff --git a/snippets/elementIsVisibleInViewport.md b/snippets/elementIsVisibleInViewport.md index 01015d4fc..83e6afe71 100644 --- a/snippets/elementIsVisibleInViewport.md +++ b/snippets/elementIsVisibleInViewport.md @@ -16,7 +16,10 @@ const elementIsVisibleInViewport = (el, partiallyVisible = false) => { ((left > 0 && left < innerWidth) || (right > 0 && right < innerWidth)) : top >= 0 && left >= 0 && bottom <= innerHeight && right <= innerWidth; }; -// e.g. 100x100 viewport and a 10x10px element at position {top: -1, left: 0, bottom: 9, right: 10} -// elementIsVisibleInViewport(el) -> false (not fully visible) -// elementIsVisibleInViewport(el, true) -> true (partially visible) +``` + +```js +// e.g. 100x100 viewport and a 10x10px element at position {top: -1, left: 0, bottom: 9, right: 10} +elementIsVisibleInViewport(el) -> false // (not fully visible) +elementIsVisibleInViewport(el, true) -> true // (partially visible) ``` diff --git a/snippets/escapeRegExp.md b/snippets/escapeRegExp.md index caed74069..7fdbff462 100644 --- a/snippets/escapeRegExp.md +++ b/snippets/escapeRegExp.md @@ -6,5 +6,8 @@ Use `replace()` to escape special characters. ```js const escapeRegExp = str => str.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); -// escapeRegExp('(test)') -> \\(test\\) +``` + +```js +escapeRegExp('(test)') -> \\(test\\) ``` diff --git a/snippets/everyNth.md b/snippets/everyNth.md index f326ebe2b..6aa78ac69 100644 --- a/snippets/everyNth.md +++ b/snippets/everyNth.md @@ -6,5 +6,8 @@ Use `Array.filter()` to create a new array that contains every nth element of a ```js const everyNth = (arr, nth) => arr.filter((e, i) => i % nth === nth - 1); -// everyNth([1,2,3,4,5,6], 2) -> [ 2, 4, 6 ] +``` + +```js +everyNth([1,2,3,4,5,6], 2) -> [ 2, 4, 6 ] ``` diff --git a/snippets/extendHex.md b/snippets/extendHex.md index 8c7773c5e..9338fb139 100644 --- a/snippets/extendHex.md +++ b/snippets/extendHex.md @@ -7,6 +7,9 @@ Use `Array.map()`, `split()` and `Array.join()` to join the mapped array for con ```js const extendHex = shortHex => '#' + shortHex.slice(shortHex.startsWith('#') ? 1 : 0).split('').map(x => x+x).join('') -// extendHex('#03f') -> '#0033ff' -// extendHex('05a') -> '#0055aa' +``` + +```js +extendHex('#03f') -> '#0033ff' +extendHex('05a') -> '#0055aa' ``` diff --git a/snippets/factorial.md b/snippets/factorial.md index aaedd7520..f4f4ad941 100644 --- a/snippets/factorial.md +++ b/snippets/factorial.md @@ -11,5 +11,8 @@ Throws an exception if `n` is a negative number. const factorial = n => n < 0 ? (() => { throw new TypeError('Negative numbers are not allowed!') })() : n <= 1 ? 1 : n * factorial(n - 1); -// factorial(6) -> 720 +``` + +```js +factorial(6) -> 720 ``` diff --git a/snippets/fibonacci.md b/snippets/fibonacci.md index e5e2e15fd..9addac34a 100644 --- a/snippets/fibonacci.md +++ b/snippets/fibonacci.md @@ -8,5 +8,8 @@ Use `Array.reduce()` to add values into the array, using the sum of the last two ```js const fibonacci = n => Array.from({ length: n}).reduce((acc, val, i) => acc.concat(i > 1 ? acc[i - 1] + acc[i - 2] : i), []); -// fibonacci(5) -> [0,1,1,2,3] +``` + +```js +factorial(6) -> 720 ``` diff --git a/snippets/fibonacciCountUntilNum.md b/snippets/fibonacciCountUntilNum.md index 12fffbfb6..82f53ea98 100644 --- a/snippets/fibonacciCountUntilNum.md +++ b/snippets/fibonacciCountUntilNum.md @@ -7,5 +7,8 @@ Use a mathematical formula to calculate the number of fibonacci numbers until `n ```js const fibonacciCountUntilNum = num => Math.ceil(Math.log(num * Math.sqrt(5) + 1/2) / Math.log((Math.sqrt(5)+1)/2)); -// fibonacciCountUntilNum(10) -> 7 +``` + +```js +fibonacciCountUntilNum(10) -> 7 ``` diff --git a/snippets/fibonacciUntilNum.md b/snippets/fibonacciUntilNum.md index 55df575d0..c7ad1cd6e 100644 --- a/snippets/fibonacciUntilNum.md +++ b/snippets/fibonacciUntilNum.md @@ -11,5 +11,8 @@ const fibonacciUntilNum = num => { let n = Math.ceil(Math.log(num * Math.sqrt(5) + 1/2) / Math.log((Math.sqrt(5)+1)/2)); return Array.from({ length: n}).reduce((acc, val, i) => acc.concat(i > 1 ? acc[i - 1] + acc[i - 2] : i), []); } -// fibonacciUntilNum(15) -> [0,1,1,2,3,5,8,13] +``` + +```js +fibonacciCountUntilNum(10) -> 7 ``` diff --git a/snippets/filterNonUnique.md b/snippets/filterNonUnique.md index 059d79aa5..1568afbf8 100644 --- a/snippets/filterNonUnique.md +++ b/snippets/filterNonUnique.md @@ -6,5 +6,8 @@ Use `Array.filter()` for an array containing only the unique values. ```js const filterNonUnique = arr => arr.filter(i => arr.indexOf(i) === arr.lastIndexOf(i)); -// filterNonUnique([1,2,2,3,4,4,5]) -> [1,3,5] +``` + +```js +filterNonUnique([1,2,2,3,4,4,5]) -> [1,3,5] ``` diff --git a/snippets/flatten.md b/snippets/flatten.md index f070f2cae..66b5b86ad 100644 --- a/snippets/flatten.md +++ b/snippets/flatten.md @@ -6,5 +6,8 @@ Use a new array and concatenate it with the spread input array causing a shallow ```js const flatten = arr => [ ].concat( ...arr ); -// flatten([1,[2],3,4]) -> [1,2,3,4] +``` + +```js +flatten([1,[2],3,4]) -> [1,2,3,4] ``` From 700e6edfe759be4f5b4e798b0d3835d7c0326868 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stefan=20Feje=C5=A1?= Date: Mon, 25 Dec 2017 14:16:05 +0100 Subject: [PATCH 05/13] update snippets 47-62 --- snippets/flattenDepth.md | 5 ++++- snippets/flip.md | 5 +++-- snippets/fromCamelCase.md | 9 ++++++--- snippets/functionName.md | 5 ++++- snippets/gcd.md | 5 ++++- snippets/getDaysDiffBetweenDates.md | 5 ++++- snippets/getScrollPosition.md | 5 ++++- snippets/getType.md | 5 ++++- snippets/getURLParameters.md | 5 ++++- snippets/groupBy.md | 7 +++++-- snippets/hammingDistance.md | 5 ++++- snippets/head.md | 5 ++++- snippets/hexToRGB.md | 10 ++++++---- snippets/initial.md | 5 ++++- snippets/initialize2DArray.md | 5 ++++- 15 files changed, 64 insertions(+), 22 deletions(-) diff --git a/snippets/flattenDepth.md b/snippets/flattenDepth.md index c07b837ff..6034b9135 100644 --- a/snippets/flattenDepth.md +++ b/snippets/flattenDepth.md @@ -11,5 +11,8 @@ Omit the second element, `depth` to flatten only to a depth of `1` (single flatt const flattenDepth = (arr, depth = 1) => depth != 1 ? arr.reduce((a, v) => a.concat(Array.isArray(v) ? flattenDepth(v, depth - 1) : v), []) : arr.reduce((a, v) => a.concat(v), []); -// flattenDepth([1,[2],[[[3],4],5]], 2) -> [1,2,[3],4,5] +``` + +```js +flatten([1,[2],3,4]) -> [1,2,3,4] ``` diff --git a/snippets/flip.md b/snippets/flip.md index 34a7d1f3b..a6ac82d15 100644 --- a/snippets/flip.md +++ b/snippets/flip.md @@ -6,7 +6,9 @@ Return a closure that takes variadic inputs, and splices the last argument to ma ```js const flip = fn => (...args) => fn(args.pop(), ...args) -/* +``` + +```js let a = {name: 'John Smith'} let b = {} const mergeFrom = flip(Object.assign) @@ -14,5 +16,4 @@ let mergePerson = mergeFrom.bind(null, a) mergePerson(b) // == b b = {} Object.assign(b, a) // == b -*/ ``` diff --git a/snippets/fromCamelCase.md b/snippets/fromCamelCase.md index 3d480dc85..14c21bc4c 100644 --- a/snippets/fromCamelCase.md +++ b/snippets/fromCamelCase.md @@ -9,7 +9,10 @@ Omit the second argument to use a default separator of `_`. const fromCamelCase = (str, separator = '_') => str.replace(/([a-z\d])([A-Z])/g, '$1' + separator + '$2') .replace(/([A-Z]+)([A-Z][a-z\d]+)/g, '$1' + separator + '$2').toLowerCase(); -// fromCamelCase('someDatabaseFieldName', ' ') -> 'some database field name' -// fromCamelCase('someLabelThatNeedsToBeCamelized', '-') -> 'some-label-that-needs-to-be-camelized' -// fromCamelCase('someJavascriptProperty', '_') -> 'some_javascript_property' +``` + +```js +fromCamelCase('someDatabaseFieldName', ' ') -> 'some database field name' +fromCamelCase('someLabelThatNeedsToBeCamelized', '-') -> 'some-label-that-needs-to-be-camelized' +fromCamelCase('someJavascriptProperty', '_') -> 'some_javascript_property' ``` diff --git a/snippets/functionName.md b/snippets/functionName.md index 54603d39c..1ad25772a 100644 --- a/snippets/functionName.md +++ b/snippets/functionName.md @@ -6,5 +6,8 @@ Use `console.debug()` and the `name` property of the passed method to log the me ```js const functionName = fn => (console.debug(fn.name), fn); -// functionName(Math.max) -> max (logged in debug channel of console) +``` + +```js +functionName(Math.max) -> max (logged in debug channel of console) ``` diff --git a/snippets/gcd.md b/snippets/gcd.md index 34fb21833..8affada12 100644 --- a/snippets/gcd.md +++ b/snippets/gcd.md @@ -8,5 +8,8 @@ Otherwise, return the GCD of `y` and the remainder of the division `x/y`. ```js const gcd = (x, y) => !y ? x : gcd(y, x % y); -// gcd (8, 36) -> 4 +``` + +```js +gcd (8, 36) -> 4 ``` diff --git a/snippets/getDaysDiffBetweenDates.md b/snippets/getDaysDiffBetweenDates.md index 3b63440c1..6c73366ac 100644 --- a/snippets/getDaysDiffBetweenDates.md +++ b/snippets/getDaysDiffBetweenDates.md @@ -6,5 +6,8 @@ Calculate the difference (in days) between two `Date` objects. ```js const getDaysDiffBetweenDates = (dateInitial, dateFinal) => (dateFinal - dateInitial) / (1000 * 3600 * 24); -// getDaysDiffBetweenDates(new Date("2017-12-13"), new Date("2017-12-22")) -> 9 +``` + +```js +getDaysDiffBetweenDates(new Date("2017-12-13"), new Date("2017-12-22")) -> 9 ``` diff --git a/snippets/getScrollPosition.md b/snippets/getScrollPosition.md index b51ec3241..2708210a1 100644 --- a/snippets/getScrollPosition.md +++ b/snippets/getScrollPosition.md @@ -9,5 +9,8 @@ You can omit `el` to use a default value of `window`. const getScrollPosition = (el = window) => ({x: (el.pageXOffset !== undefined) ? el.pageXOffset : el.scrollLeft, y: (el.pageYOffset !== undefined) ? el.pageYOffset : el.scrollTop}); -// getScrollPosition() -> {x: 0, y: 200} +``` + +```js +getScrollPosition() -> {x: 0, y: 200} ``` diff --git a/snippets/getType.md b/snippets/getType.md index 53f660420..f0b9be8d5 100644 --- a/snippets/getType.md +++ b/snippets/getType.md @@ -7,5 +7,8 @@ Returns lowercased constructor name of value, "undefined" or "null" if value is ```js const getType = v => v === undefined ? 'undefined' : v === null ? 'null' : v.constructor.name.toLowerCase(); -// getType(new Set([1,2,3])) -> "set" +``` + +```js +getType(new Set([1,2,3])) -> "set" ``` diff --git a/snippets/getURLParameters.md b/snippets/getURLParameters.md index 77dddd532..5f4690bfc 100644 --- a/snippets/getURLParameters.md +++ b/snippets/getURLParameters.md @@ -10,5 +10,8 @@ const getURLParameters = url => url.match(/([^?=&]+)(=([^&]*))/g).reduce( (a, v) => (a[v.slice(0, v.indexOf('='))] = v.slice(v.indexOf('=') + 1), a), {} ); -// getURLParameters('http://url.com/page?name=Adam&surname=Smith') -> {name: 'Adam', surname: 'Smith'} +``` + +```js +getURLParameters('http://url.com/page?name=Adam&surname=Smith') -> {name: 'Adam', surname: 'Smith'} ``` diff --git a/snippets/groupBy.md b/snippets/groupBy.md index d83795fdc..4b301e2b8 100644 --- a/snippets/groupBy.md +++ b/snippets/groupBy.md @@ -9,6 +9,9 @@ Use `Array.reduce()` to create an object, where the keys are produced from the m const groupBy = (arr, func) => arr.map(typeof func === 'function' ? func : val => val[func]) .reduce((acc, val, i) => { acc[val] = (acc[val] || []).concat(arr[i]); return acc; }, {}); -// groupBy([6.1, 4.2, 6.3], Math.floor) -> {4: [4.2], 6: [6.1, 6.3]} -// groupBy(['one', 'two', 'three'], 'length') -> {3: ['one', 'two'], 5: ['three']} +``` + +```js +groupBy([6.1, 4.2, 6.3], Math.floor) -> {4: [4.2], 6: [6.1, 6.3]} +groupBy(['one', 'two', 'three'], 'length') -> {3: ['one', 'two'], 5: ['three']} ``` diff --git a/snippets/hammingDistance.md b/snippets/hammingDistance.md index 97c08d2aa..e0f22dba7 100644 --- a/snippets/hammingDistance.md +++ b/snippets/hammingDistance.md @@ -8,5 +8,8 @@ Count and return the number of `1`s in the string, using `match(/1/g)`. ```js const hammingDistance = (num1, num2) => ((num1 ^ num2).toString(2).match(/1/g) || '').length; -// hammingDistance(2,3) -> 1 +``` + +```js +hammingDistance(2,3) -> 1 ``` diff --git a/snippets/head.md b/snippets/head.md index ece926a50..30b8951a6 100644 --- a/snippets/head.md +++ b/snippets/head.md @@ -6,5 +6,8 @@ Use `arr[0]` to return the first element of the passed array. ```js const head = arr => arr[0]; -// head([1,2,3]) -> 1 +``` + +```js +head([1,2,3]) -> 1 ``` diff --git a/snippets/hexToRGB.md b/snippets/hexToRGB.md index 66c95fd3a..d3fab8a8d 100644 --- a/snippets/hexToRGB.md +++ b/snippets/hexToRGB.md @@ -16,8 +16,10 @@ const hexToRGB = hex => { + ((h & (alpha ? 0x0000ff00 : 0x0000ff)) >>> (alpha ? 8 : 0)) + (alpha ? `, ${(h & 0x000000ff)}` : '') + ')'; }; -// hexToRGB('#27ae60ff') -> 'rgba(39, 174, 96, 255)' -// hexToRGB('27ae60') -> 'rgb(39, 174, 96)' -// hexToRGB('#fff') -> 'rgb(255, 255, 255)' - +``` + +```js +hexToRGB('#27ae60ff') -> 'rgba(39, 174, 96, 255)' +hexToRGB('27ae60') -> 'rgb(39, 174, 96)' +hexToRGB('#fff') -> 'rgb(255, 255, 255)' ``` diff --git a/snippets/initial.md b/snippets/initial.md index 7b1c5c68c..87827c437 100644 --- a/snippets/initial.md +++ b/snippets/initial.md @@ -6,5 +6,8 @@ Use `arr.slice(0,-1)` to return all but the last element of the array. ```js const initial = arr => arr.slice(0, -1); -// initial([1,2,3]) -> [1,2] +``` + +```js +initial([1,2,3]) -> [1,2] ``` diff --git a/snippets/initialize2DArray.md b/snippets/initialize2DArray.md index 0cb1df126..ec7bf7681 100644 --- a/snippets/initialize2DArray.md +++ b/snippets/initialize2DArray.md @@ -6,5 +6,8 @@ Use `Array.map()` to generate h rows where each is a new array of size w initial ```js const initialize2DArray = (w, h, val = null) => Array(h).fill().map(() => Array(w).fill(val)); -// initializeArrayWithRange(2, 2, 0) -> [[0,0], [0,0]] +``` + +```js +initializeArrayWithRange(2, 2, 0) -> [[0,0], [0,0]] ``` From 038df28ca56fd49734bccf71e8a17cb33c35d64f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stefan=20Feje=C5=A1?= Date: Mon, 25 Dec 2017 14:23:06 +0100 Subject: [PATCH 06/13] update snippets 62-78 --- snippets/JSONToDate.md | 5 ++++- snippets/inRange.md | 13 ++++++++----- snippets/initialize2DArray.md | 2 +- snippets/initializeArrayWithRange.md | 9 ++++++--- snippets/initializeArrayWithValues.md | 5 ++++- snippets/intersection.md | 5 ++++- snippets/isArmstrongNumber.md | 11 +++++++---- snippets/isArray.md | 7 +++++-- snippets/isBoolean.md | 7 +++++-- snippets/isDivisible.md | 5 ++++- snippets/isEven.md | 5 ++++- snippets/isFunction.md | 7 +++++-- snippets/isNumber.md | 7 +++++-- snippets/isPrime.md | 9 ++++++--- snippets/isString.md | 7 +++++-- snippets/isSymbol.md | 7 +++++-- 16 files changed, 78 insertions(+), 33 deletions(-) diff --git a/snippets/JSONToDate.md b/snippets/JSONToDate.md index c5fa32175..38e9219f9 100644 --- a/snippets/JSONToDate.md +++ b/snippets/JSONToDate.md @@ -9,5 +9,8 @@ const JSONToDate = arr => { const dt = new Date(parseInt(arr.toString().substr(6))); return `${ dt.getDate() }/${ dt.getMonth() + 1 }/${ dt.getFullYear() }` }; -// JSONToDate(/Date(1489525200000)/) -> "14/3/2017" +``` + +```js +JSONToDate(/Date(1489525200000)/) -> "14/3/2017" ``` diff --git a/snippets/inRange.md b/snippets/inRange.md index 5089393dc..f4caf811c 100644 --- a/snippets/inRange.md +++ b/snippets/inRange.md @@ -1,6 +1,6 @@ ### inRange -Checks if the given number falls within the given range. +Checks if the given number falls within the given range. Use arithmetic comparison to check if the given number is in the specified range. If the second parameter, `end`, is not specified, the range is considered to be from `0` to `start`. @@ -10,8 +10,11 @@ const inRange = (n, start, end=null) => { if(end && start > end) end = [start, start=end][0]; return (end == null) ? (n>=0 && n=start && n true -// inRange(3, 4) -> true -// inRange(2, 3, 5) -> false -// inrange(3, 2) -> false +``` + +```js +inRange(3, 2, 5) -> true +inRange(3, 4) -> true +inRange(2, 3, 5) -> false +inrange(3, 2) -> false ``` diff --git a/snippets/initialize2DArray.md b/snippets/initialize2DArray.md index ec7bf7681..add743115 100644 --- a/snippets/initialize2DArray.md +++ b/snippets/initialize2DArray.md @@ -9,5 +9,5 @@ const initialize2DArray = (w, h, val = null) => Array(h).fill().map(() => Array( ``` ```js -initializeArrayWithRange(2, 2, 0) -> [[0,0], [0,0]] +initialize2DArray(2, 2, 0) -> [[0,0], [0,0]] ``` diff --git a/snippets/initializeArrayWithRange.md b/snippets/initializeArrayWithRange.md index c3ef5a0a0..8ea87a9c4 100644 --- a/snippets/initializeArrayWithRange.md +++ b/snippets/initializeArrayWithRange.md @@ -6,8 +6,11 @@ Use `Array((end + 1) - start)` to create an array of the desired length, `Array. You can omit `start` to use a default value of `0`. ```js -const initializeArrayWithRange = (end, start = 0) => +const initializeArrayWithRange = (end, start = 0) => Array.from({ length: (end + 1) - start }).map((v, i) => i + start); -// initializeArrayWithRange(5) -> [0,1,2,3,4,5] -// initializeArrayWithRange(7, 3) -> [3,4,5,6,7] +``` + +```js +initializeArrayWithRange(5) -> [0,1,2,3,4,5] +initializeArrayWithRange(7, 3) -> [3,4,5,6,7] ``` diff --git a/snippets/initializeArrayWithValues.md b/snippets/initializeArrayWithValues.md index 47459fcdd..a92a09e7a 100644 --- a/snippets/initializeArrayWithValues.md +++ b/snippets/initializeArrayWithValues.md @@ -7,5 +7,8 @@ You can omit `value` to use a default value of `0`. ```js const initializeArrayWithValues = (n, value = 0) => Array(n).fill(value); -// initializeArrayWithValues(5, 2) -> [2,2,2,2,2] +``` + +```js +initializeArrayWithValues(5, 2) -> [2,2,2,2,2] ``` diff --git a/snippets/intersection.md b/snippets/intersection.md index 1c367cd92..0596a04ce 100644 --- a/snippets/intersection.md +++ b/snippets/intersection.md @@ -6,5 +6,8 @@ Create a `Set` from `b`, then use `Array.filter()` on `a` to only keep values co ```js const intersection = (a, b) => { const s = new Set(b); return a.filter(x => s.has(x)); }; -// intersection([1,2,3], [4,3,2]) -> [2,3] +``` + +```js +intersection([1,2,3], [4,3,2]) -> [2,3] ``` diff --git a/snippets/isArmstrongNumber.md b/snippets/isArmstrongNumber.md index 139de9d72..65972fc88 100644 --- a/snippets/isArmstrongNumber.md +++ b/snippets/isArmstrongNumber.md @@ -5,9 +5,12 @@ Checks if the given number is an Armstrong number or not. Convert the given number into an array of digits. Use `Math.pow()` to get the appropriate power for each digit and sum them up. If the sum is equal to the number itself, return `true` otherwise `false`. ```js -const isArmstrongNumber = digits => +const isArmstrongNumber = digits => ( arr => arr.reduce( ( a, d ) => a + Math.pow( parseInt( d ), arr.length ), 0 ) == digits ? true : false )( ( digits+'' ).split( '' ) ); -// isArmstrongNumber(1634) -> true -// isArmstrongNumber(371) -> true -// isArmstrongNumber(56) -> false +``` + +```js +isArmstrongNumber(1634) -> true +isArmstrongNumber(371) -> true +isArmstrongNumber(56) -> false ``` diff --git a/snippets/isArray.md b/snippets/isArray.md index f6e410719..28b80c262 100644 --- a/snippets/isArray.md +++ b/snippets/isArray.md @@ -6,6 +6,9 @@ Use `Array.isArray()` to check if a value is classified as an array. ```js const isArray = val => !!val && Array.isArray(val); -// isArray(null) -> false -// isArray([1]) -> true +``` + +```js +isArray(null) -> false +isArray([1]) -> true ``` diff --git a/snippets/isBoolean.md b/snippets/isBoolean.md index ae402c5e4..ad47fa33e 100644 --- a/snippets/isBoolean.md +++ b/snippets/isBoolean.md @@ -6,6 +6,9 @@ Use `typeof` to check if a value is classified as a boolean primitive. ```js const isBoolean = val => typeof val === 'boolean'; -// isBoolean(null) -> false -// isBoolean(false) -> true +``` + +```js +isBoolean(null) -> false +isBoolean(false) -> true ``` diff --git a/snippets/isDivisible.md b/snippets/isDivisible.md index 5adad9453..95919d69d 100644 --- a/snippets/isDivisible.md +++ b/snippets/isDivisible.md @@ -6,5 +6,8 @@ Use the modulo operator (`%`) to check if the remainder is equal to `0`. ```js const isDivisible = (dividend, divisor) => dividend % divisor === 0; -// isDivisible(6,3) -> true +``` + +```js +isDivisible(6,3) -> true ``` diff --git a/snippets/isEven.md b/snippets/isEven.md index 5dfcb414f..b2bb58b58 100644 --- a/snippets/isEven.md +++ b/snippets/isEven.md @@ -7,5 +7,8 @@ Returns `true` if the number is even, `false` if the number is odd. ```js const isEven = num => num % 2 === 0; -// isEven(3) -> false +``` + +```js +isEven(3) -> false ``` diff --git a/snippets/isFunction.md b/snippets/isFunction.md index af5960e00..eae2073e4 100644 --- a/snippets/isFunction.md +++ b/snippets/isFunction.md @@ -6,6 +6,9 @@ Use `typeof` to check if a value is classified as a function primitive. ```js const isFunction = val => val && typeof val === 'function'; -// isFunction('x') -> false -// isFunction(x => x) -> true +``` + +```js +isFunction('x') -> false +isFunction(x => x) -> true ``` diff --git a/snippets/isNumber.md b/snippets/isNumber.md index 83b33bc11..3035a0a3a 100644 --- a/snippets/isNumber.md +++ b/snippets/isNumber.md @@ -6,6 +6,9 @@ Use `typeof` to check if a value is classified as a number primitive. ```js const isNumber = val => typeof val === 'number'; -// isNumber('1') -> false -// isNumber(1) -> true ``` + +```js +isNumber('1') -> false +isNumber(1) -> true +``` \ No newline at end of file diff --git a/snippets/isPrime.md b/snippets/isPrime.md index 6f77ebd6c..2e609028b 100644 --- a/snippets/isPrime.md +++ b/snippets/isPrime.md @@ -2,7 +2,7 @@ Checks if the provided integer is a prime number. -Check numbers from `2` to the square root of the given number. +Check numbers from `2` to the square root of the given number. Return `false` if any of them divides the given number, else return `true`, unless the number is less than `2`. ```js @@ -11,6 +11,9 @@ const isPrime = num => { for (var i = 2; i * i <= boundary; i++) if (num % i == 0) return false; return num >= 2; }; -// isPrime(11) -> true -// isPrime(12) -> false +``` + +```js +isPrime(11) -> true +isPrime(12) -> false ``` diff --git a/snippets/isString.md b/snippets/isString.md index 775e050a4..923bcd174 100644 --- a/snippets/isString.md +++ b/snippets/isString.md @@ -6,6 +6,9 @@ Use `typeof` to check if a value is classified as a string primitive. ```js const isString = val => typeof val === 'string'; -// isString(10) -> false -// isString('10') -> true +``` + +```js +isString(10) -> false +isString('10') -> true ``` diff --git a/snippets/isSymbol.md b/snippets/isSymbol.md index a4ec67dc8..0baa68500 100644 --- a/snippets/isSymbol.md +++ b/snippets/isSymbol.md @@ -6,6 +6,9 @@ Use `typeof` to check if a value is classified as a symbol primitive. ```js const isSymbol = val => typeof val === 'symbol'; -// isSymbol('x') -> false -// isSymbol(Symbol('x')) -> true +``` + +```js +isSymbol('x') -> false +isSymbol(Symbol('x')) -> true ``` From be50a153f2e31bab62049121f9221ed8f55533ec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stefan=20Feje=C5=A1?= Date: Mon, 25 Dec 2017 14:33:49 +0100 Subject: [PATCH 07/13] update snippets 78 - 96 --- snippets/JSONToFile.md | 5 ++++- snippets/last.md | 5 ++++- snippets/lcm.md | 5 ++++- snippets/mapObject.md | 7 ++++--- snippets/median.md | 7 +++++-- snippets/negate.md | 7 +++++-- snippets/nthElement.md | 7 +++++-- snippets/objectFromPairs.md | 5 ++++- snippets/objectToPairs.md | 5 ++++- snippets/orderBy.md | 5 +++-- snippets/palindrome.md | 7 +++++-- snippets/percentile.md | 7 +++++-- snippets/pick.md | 5 ++++- snippets/pipe.md | 5 +++-- snippets/powerset.md | 5 ++++- snippets/primes.md | 11 +++++++---- snippets/promisify.md | 7 +++++-- snippets/pull.md | 20 +++++++++++--------- 18 files changed, 86 insertions(+), 39 deletions(-) diff --git a/snippets/JSONToFile.md b/snippets/JSONToFile.md index 3677fc5e3..300b47e1f 100644 --- a/snippets/JSONToFile.md +++ b/snippets/JSONToFile.md @@ -7,5 +7,8 @@ Use `fs.writeFile()`, template literals and `JSON.stringify()` to write a `json` ```js const fs = require('fs'); const JSONToFile = (obj, filename) => fs.writeFile(`${filename}.json`, JSON.stringify(obj, null, 2)) -// JSONToFile({test: "is passed"}, 'testJsonFile') -> writes the object to 'testJsonFile.json' +``` + +```js +JSONToFile({test: "is passed"}, 'testJsonFile') -> writes the object to 'testJsonFile.json' ``` diff --git a/snippets/last.md b/snippets/last.md index 481e2d6e0..f26427591 100644 --- a/snippets/last.md +++ b/snippets/last.md @@ -6,5 +6,8 @@ Use `arr.length - 1` to compute the index of the last element of the given array ```js const last = arr => arr[arr.length - 1]; -// last([1,2,3]) -> 3 +``` + +```js +last([1,2,3]) -> 3 ``` diff --git a/snippets/lcm.md b/snippets/lcm.md index 73b9c43c8..cc9b32367 100644 --- a/snippets/lcm.md +++ b/snippets/lcm.md @@ -10,5 +10,8 @@ const lcm = (x,y) => { const gcd = (x, y) => !y ? x : gcd(y, x % y); return Math.abs(x*y)/(gcd(x,y)); }; -// lcm(12,7) -> 84 +``` + +```js +lcm(12,7) -> 84 ``` diff --git a/snippets/mapObject.md b/snippets/mapObject.md index eb5ea736f..3eebc515f 100644 --- a/snippets/mapObject.md +++ b/snippets/mapObject.md @@ -5,10 +5,11 @@ Maps the values of an array to an object using a function, where the key-value p Use an anonymous inner function scope to declare an undefined memory space, using closures to store a return value. Use a new `Array` to store the array with a map of the function over its data set and a comma operator to return a second step, without needing to move from one context to another (due to closures and order of operations). ```js -const mapObject = (arr, fn) => +const mapObject = (arr, fn) => (a => (a = [arr, arr.map(fn)], a[0].reduce( (acc,val,ind) => (acc[val] = a[1][ind], acc), {}) )) ( ); -/* +``` + +```js const squareIt = arr => mapObject(arr, a => a*a) squareIt([1,2,3]) // { 1: 1, 2: 4, 3: 9 } -*/ ``` diff --git a/snippets/median.md b/snippets/median.md index c7eea609c..e472e7c0d 100644 --- a/snippets/median.md +++ b/snippets/median.md @@ -10,6 +10,9 @@ const median = arr => { const mid = Math.floor(arr.length / 2), nums = [...arr].sort((a, b) => a - b); return arr.length % 2 !== 0 ? nums[mid] : (nums[mid - 1] + nums[mid]) / 2; }; -// median([5,6,50,1,-5]) -> 5 -// median([0,10,-2,7]) -> 3.5 +``` + +```js +median([5,6,50,1,-5]) -> 5 +median([0,10,-2,7]) -> 3.5 ``` diff --git a/snippets/negate.md b/snippets/negate.md index 5f14e4a0f..739ad97c1 100644 --- a/snippets/negate.md +++ b/snippets/negate.md @@ -6,6 +6,9 @@ Take a predicate function and apply `not` to it with its arguments. ```js const negate = func => (...args) => !func(...args); -// filter([1, 2, 3, 4, 5, 6], negate(isEven)) -> [1, 3, 5] -// negate(isOdd)(1) -> false +``` + +```js +filter([1, 2, 3, 4, 5, 6], negate(isEven)) -> [1, 3, 5] +negate(isOdd)(1) -> false ``` diff --git a/snippets/nthElement.md b/snippets/nthElement.md index ae472eb38..ba2d1933e 100644 --- a/snippets/nthElement.md +++ b/snippets/nthElement.md @@ -8,6 +8,9 @@ Omit the second argument, `n`, to get the first element of the array. ```js const nthElement = (arr, n=0) => (n>0? arr.slice(n,n+1) : arr.slice(n))[0]; -// nthElement(['a','b','c'],1) -> 'b' -// nthElement(['a','b','b'],-3) -> 'a' +``` + +```js +nthElement(['a','b','c'],1) -> 'b' +nthElement(['a','b','b'],-3) -> 'a' ``` diff --git a/snippets/objectFromPairs.md b/snippets/objectFromPairs.md index ebdacb92c..2ed208f44 100644 --- a/snippets/objectFromPairs.md +++ b/snippets/objectFromPairs.md @@ -6,5 +6,8 @@ Use `Array.reduce()` to create and combine key-value pairs. ```js const objectFromPairs = arr => arr.reduce((a, v) => (a[v[0]] = v[1], a), {}); -// objectFromPairs([['a',1],['b',2]]) -> {a: 1, b: 2} +``` + +```js +objectFromPairs([['a',1],['b',2]]) -> {a: 1, b: 2} ``` diff --git a/snippets/objectToPairs.md b/snippets/objectToPairs.md index 7a6079650..6ea5fc051 100644 --- a/snippets/objectToPairs.md +++ b/snippets/objectToPairs.md @@ -6,5 +6,8 @@ Use `Object.keys()` and `Array.map()` to iterate over the object's keys and prod ```js const objectToPairs = obj => Object.keys(obj).map(k => [k, obj[k]]); -// objectToPairs({a: 1, b: 2}) -> [['a',1],['b',2]]) +``` + +```js +objectToPairs({a: 1, b: 2}) -> [['a',1],['b',2]]) ``` diff --git a/snippets/orderBy.md b/snippets/orderBy.md index c80b3667f..ab5581dc3 100644 --- a/snippets/orderBy.md +++ b/snippets/orderBy.md @@ -16,10 +16,11 @@ const orderBy = (arr, props, orders) => return acc; }, 0) ); -/* +``` + +```js const users = [{ 'name': 'fred', 'age': 48 },{ 'name': 'barney', 'age': 36 }, { 'name': 'fred', 'age': 40 },{ 'name': 'barney', 'age': 34 }]; orderby(users, ['name', 'age'], ['asc', 'desc']) -> [{name: 'barney', age: 36}, {name: 'barney', age: 34}, {name: 'fred', age: 48}, {name: 'fred', age: 40}] orderby(users, ['name', 'age']) -> [{name: 'barney', age: 34}, {name: 'barney', age: 36}, {name: 'fred', age: 40}, {name: 'fred', age: 48}] -*/ ``` diff --git a/snippets/palindrome.md b/snippets/palindrome.md index cca1bb729..820162617 100644 --- a/snippets/palindrome.md +++ b/snippets/palindrome.md @@ -10,5 +10,8 @@ const palindrome = str => { const s = str.toLowerCase().replace(/[\W_]/g,''); return s === s.split('').reverse().join(''); } -// palindrome('taco cat') -> true - ``` +``` + +```js +palindrome('taco cat') -> true +``` diff --git a/snippets/percentile.md b/snippets/percentile.md index 7485494e2..5287521b0 100644 --- a/snippets/percentile.md +++ b/snippets/percentile.md @@ -7,5 +7,8 @@ Use `Array.reduce()` to calculate how many numbers are below the value and how m ```js const percentile = (arr, val) => 100 * arr.reduce((acc,v) => acc + (v < val ? 1 : 0) + (v === val ? 0.5 : 0), 0) / arr.length; -// percentile([1,2,3,4,5,6,7,8,9,10], 6) -> 55 - ``` +``` + +```js +percentile([1,2,3,4,5,6,7,8,9,10], 6) -> 55 +``` diff --git a/snippets/pick.md b/snippets/pick.md index 668c9d30c..0bfeba286 100644 --- a/snippets/pick.md +++ b/snippets/pick.md @@ -7,5 +7,8 @@ Use `Array.reduce()` to convert the filtered/picked keys back to an object with ```js const pick = (obj, arr) => arr.reduce((acc, curr) => (curr in obj && (acc[curr] = obj[curr]), acc), {}); -// pick({ 'a': 1, 'b': '2', 'c': 3 }, ['a', 'c']) -> { 'a': 1, 'c': 3 } +``` + +```js +pick({ 'a': 1, 'b': '2', 'c': 3 }, ['a', 'c']) -> { 'a': 1, 'c': 3 } ``` diff --git a/snippets/pipe.md b/snippets/pipe.md index 4c6495cda..a7c271afe 100644 --- a/snippets/pipe.md +++ b/snippets/pipe.md @@ -7,10 +7,11 @@ The first (leftmost) function can accept one or more arguments; the remaining fu ```js const pipeFunctions = (...fns) => fns.reduce((f, g) => (...args) => g(f(...args))); -/* +``` + +```js const add5 = x => x + 5 const multiply = (x, y) => x * y const multiplyAndAdd5 = pipeFunctions(multiply, add5) multiplyAndAdd5(5, 2) -> 15 -*/ ``` diff --git a/snippets/powerset.md b/snippets/powerset.md index 09b233212..dc91406e9 100644 --- a/snippets/powerset.md +++ b/snippets/powerset.md @@ -7,5 +7,8 @@ Use `Array.reduce()` combined with `Array.map()` to iterate over elements and co ```js const powerset = arr => arr.reduce((a, v) => a.concat(a.map(r => [v].concat(r))), [[]]); -// powerset([1,2]) -> [[], [1], [2], [2,1]] +``` + +```js +powerset([1,2]) -> [[], [1], [2], [2,1]] ``` diff --git a/snippets/primes.md b/snippets/primes.md index 81e8f2999..c8b64f1e5 100644 --- a/snippets/primes.md +++ b/snippets/primes.md @@ -1,4 +1,4 @@ -### primes +### primes Generates primes up to a given number, using the Sieve of Eratosthenes. @@ -6,11 +6,14 @@ Generate an array from `2` to the given number. Use `Array.filter()` to filter o ```js const primes = num => { - let arr = Array.from({length:num-1}).map((x,i)=> i+2), + let arr = Array.from({length:num-1}).map((x,i)=> i+2), sqroot = Math.floor(Math.sqrt(num)), numsTillSqroot = Array.from({length:sqroot-1}).map((x,i)=> i+2); numsTillSqroot.forEach(x => arr = arr.filter(y => ((y%x)!==0)||(y==x))); - return arr; + return arr; } -// primes(10) -> [2,3,5,7] +``` + +```js +primes(10) -> [2,3,5,7] ``` diff --git a/snippets/promisify.md b/snippets/promisify.md index 80a7d48d0..4769fa5e9 100644 --- a/snippets/promisify.md +++ b/snippets/promisify.md @@ -14,6 +14,9 @@ const promisify = func => func(...args, (err, result) => err ? reject(err) : resolve(result)) ); -// const delay = promisify((d, cb) => setTimeout(cb, d)) -// delay(2000).then(() => console.log('Hi!')) -> Promise resolves after 2s +``` + +```js +const delay = promisify((d, cb) => setTimeout(cb, d)) +delay(2000).then(() => console.log('Hi!')) -> // Promise resolves after 2s ``` diff --git a/snippets/pull.md b/snippets/pull.md index d7d0412c0..52e0f3ea6 100644 --- a/snippets/pull.md +++ b/snippets/pull.md @@ -11,15 +11,17 @@ _(For a snippet that does not mutate the original array see [`without`](#without const pull = (arr, ...args) => { let argState = Array.isArray(args[0]) ? args[0] : args; let pulled = arr.filter((v, i) => !argState.includes(v)); - arr.length = 0; + arr.length = 0; pulled.forEach(v => arr.push(v)); }; - -// let myArray1 = ['a', 'b', 'c', 'a', 'b', 'c']; -// pull(myArray1, 'a', 'c'); -// console.log(myArray1) -> [ 'b', 'b' ] - -// let myArray2 = ['a', 'b', 'c', 'a', 'b', 'c']; -// pull(myArray2, ['a', 'c']); -// console.log(myArray2) -> [ 'b', 'b' ] +``` + +```js +let myArray1 = ['a', 'b', 'c', 'a', 'b', 'c']; +pull(myArray1, 'a', 'c'); +console.log(myArray1) -> [ 'b', 'b' ] + +let myArray2 = ['a', 'b', 'c', 'a', 'b', 'c']; +pull(myArray2, ['a', 'c']); +console.log(myArray2) -> [ 'b', 'b' ] ``` From 7e52dd6d4392e1a1fb888aafe9a29d5e2e7cd949 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stefan=20Feje=C5=A1?= Date: Mon, 25 Dec 2017 14:38:49 +0100 Subject: [PATCH 08/13] update snippets 96-107 --- snippets/RGBToHex.md | 5 ++++- snippets/pullAtIndex.md | 18 ++++++++++-------- snippets/pullAtValue.md | 9 +++++---- snippets/randomHexColorCode.md | 11 +++++++---- snippets/randomIntegerInRange.md | 5 ++++- snippets/randomNumberInRange.md | 5 ++++- snippets/readFileLines.md | 19 ++++++++++--------- snippets/redirect.md | 5 ++++- snippets/remove.md | 5 ++++- snippets/repeatString.md | 7 +++++-- snippets/reverseString.md | 5 ++++- 11 files changed, 61 insertions(+), 33 deletions(-) diff --git a/snippets/RGBToHex.md b/snippets/RGBToHex.md index eb13cbeb4..f7568f70f 100644 --- a/snippets/RGBToHex.md +++ b/snippets/RGBToHex.md @@ -6,5 +6,8 @@ Convert given RGB parameters to hexadecimal string using bitwise left-shift oper ```js const RGBToHex = (r, g, b) => ((r << 16) + (g << 8) + b).toString(16).padStart(6, '0'); -// RGBToHex(255, 165, 1) -> 'ffa501' +``` + +```js +RGBToHex(255, 165, 1) -> 'ffa501' ``` diff --git a/snippets/pullAtIndex.md b/snippets/pullAtIndex.md index 260d7b634..bd7472567 100644 --- a/snippets/pullAtIndex.md +++ b/snippets/pullAtIndex.md @@ -4,21 +4,23 @@ Mutates the original array to filter out the values at the specified indexes. Use `Array.filter()` and `Array.includes()` to pull out the values that are not needed. Use `Array.length = 0` to mutate the passed in an array by resetting it's length to zero and `Array.push()` to re-populate it with only the pulled values. -Use `Array.push()` to keep track of pulled values +Use `Array.push()` to keep track of pulled values ```js const pullAtIndex = (arr, pullArr) => { let removed = []; let pulled = arr.map((v, i) => pullArr.includes(i) ? removed.push(v) : v) .filter((v, i) => !pullArr.includes(i)) - arr.length = 0; + arr.length = 0; pulled.forEach(v => arr.push(v)); return removed; } - -// let myArray = ['a', 'b', 'c', 'd']; -// let pulled = pullAtIndex(myArray, [1, 3]); - -// console.log(myArray); -> [ 'a', 'c' ] -// console.log(pulled); -> [ 'b', 'd' ] +``` + +```js +let myArray = ['a', 'b', 'c', 'd']; +let pulled = pullAtIndex(myArray, [1, 3]); + +console.log(myArray); -> [ 'a', 'c' ] +console.log(pulled); -> [ 'b', 'd' ] ``` diff --git a/snippets/pullAtValue.md b/snippets/pullAtValue.md index 52e1eac21..97a59a0ed 100644 --- a/snippets/pullAtValue.md +++ b/snippets/pullAtValue.md @@ -4,21 +4,22 @@ Mutates the original array to filter out the values specified. Returns the remov Use `Array.filter()` and `Array.includes()` to pull out the values that are not needed. Use `Array.length = 0` to mutate the passed in an array by resetting it's length to zero and `Array.push()` to re-populate it with only the pulled values. -Use `Array.push()` to keep track of pulled values +Use `Array.push()` to keep track of pulled values ```js const pullAtValue = (arr, pullArr) => { - let removed = [], + let removed = [], pushToRemove = arr.forEach((v, i) => pullArr.includes(v) ? removed.push(v) : v), mutateTo = arr.filter((v, i) => !pullArr.includes(v)); arr.length = 0; mutateTo.forEach(v => arr.push(v)); return removed; } -/* +``` + +```js let myArray = ['a', 'b', 'c', 'd']; let pulled = pullAtValue(myArray, ['b', 'd']); console.log(myArray); -> [ 'a', 'c' ] console.log(pulled); -> [ 'b', 'd' ] -*/ ``` diff --git a/snippets/randomHexColorCode.md b/snippets/randomHexColorCode.md index 83d7d0f91..a40f129e2 100644 --- a/snippets/randomHexColorCode.md +++ b/snippets/randomHexColorCode.md @@ -2,11 +2,14 @@ Generates a random hexadecimal color code. -Use `Math.random` to generate a random 24-bit(6x4bits) hexadecimal number. Use bit shifting and then convert it to an hexadecimal String using `toString(16)`. +Use `Math.random` to generate a random 24-bit(6x4bits) hexadecimal number. Use bit shifting and then convert it to an hexadecimal String using `toString(16)`. ```js const randomHexColorCode = () => '#'+(Math.random()*0xFFFFFF<<0).toString(16); -// randomHexColorCode() -> "#e34155" -// randomHexColorCode() -> "#fd73a6" -// randomHexColorCode() -> "#4144c6" +``` + +```js +randomHexColorCode() -> "#e34155" +randomHexColorCode() -> "#fd73a6" +randomHexColorCode() -> "#4144c6" ``` diff --git a/snippets/randomIntegerInRange.md b/snippets/randomIntegerInRange.md index 2d35fd279..e8fd26077 100644 --- a/snippets/randomIntegerInRange.md +++ b/snippets/randomIntegerInRange.md @@ -6,5 +6,8 @@ Use `Math.random()` to generate a random number and map it to the desired range, ```js const randomIntegerInRange = (min, max) => Math.floor(Math.random() * (max - min + 1)) + min; -// randomIntegerInRange(0, 5) -> 2 +``` + +```js +randomIntegerInRange(0, 5) -> 2 ``` diff --git a/snippets/randomNumberInRange.md b/snippets/randomNumberInRange.md index a92dfff54..53d60b16d 100644 --- a/snippets/randomNumberInRange.md +++ b/snippets/randomNumberInRange.md @@ -6,5 +6,8 @@ Use `Math.random()` to generate a random value, map it to the desired range usin ```js const randomNumberInRange = (min, max) => Math.random() * (max - min) + min; -// randomNumberInRange(2,10) -> 6.0211363285087005 +``` + +```js +randomNumberInRange(2,10) -> 6.0211363285087005 ``` diff --git a/snippets/readFileLines.md b/snippets/readFileLines.md index 6433c6059..1939a78cd 100644 --- a/snippets/readFileLines.md +++ b/snippets/readFileLines.md @@ -9,13 +9,14 @@ creating an array from contents of file by `split`ing file content line by line ```js const fs = require('fs'); const readFileLines = filename => fs.readFileSync(filename).toString('UTF8').split('\n'); -/* - contents of test.txt : - line1 - line2 - line3 - ___________________________ - let arr = readFileLines('test.txt') - console.log(arr) // -> ['line1', 'line2', 'line3'] - */ +``` + +```js +contents of test.txt : + line1 + line2 + line3 + ___________________________ +let arr = readFileLines('test.txt') +console.log(arr) // -> ['line1', 'line2', 'line3'] ``` diff --git a/snippets/redirect.md b/snippets/redirect.md index d98e2caf2..006d5acd0 100644 --- a/snippets/redirect.md +++ b/snippets/redirect.md @@ -8,5 +8,8 @@ Pass a second argument to simulate a link click (`true` - default) or an HTTP re ```js const redirect = (url, asLink = true) => asLink ? window.location.href = url : window.location.replace(url); -// redirect('https://google.com') +``` + +```js +redirect('https://google.com') ``` diff --git a/snippets/remove.md b/snippets/remove.md index 34b10aa24..78be3257b 100644 --- a/snippets/remove.md +++ b/snippets/remove.md @@ -11,5 +11,8 @@ const remove = (arr, func) => arr.splice(arr.indexOf(val), 1); return acc.concat(val); }, []) : []; -// remove([1, 2, 3, 4], n => n % 2 == 0) -> [2, 4] +``` + +```js +remove([1, 2, 3, 4], n => n % 2 == 0) -> [2, 4] ``` diff --git a/snippets/repeatString.md b/snippets/repeatString.md index 888965713..2d892b506 100644 --- a/snippets/repeatString.md +++ b/snippets/repeatString.md @@ -8,6 +8,9 @@ If no string is provided the default is `""` and the default number of times is const repeatString = (str="",num=2) => { return num >= 0 ? str.repeat(num) : str; } -// repeatString("abc",3) -> 'abcabcabc' -// repeatString("abc") -> 'abcabc' +``` + +```js +repeatString("abc",3) -> 'abcabcabc' +repeatString("abc") -> 'abcabc' ``` diff --git a/snippets/reverseString.md b/snippets/reverseString.md index 5564a5897..2fe9cdd0b 100644 --- a/snippets/reverseString.md +++ b/snippets/reverseString.md @@ -7,5 +7,8 @@ Combine characters to get a string using `join('')`. ```js const reverseString = str => str.split('').reverse().join(''); -// reverseString('foobar') -> 'raboof' +``` + +```js +reverseString('foobar') -> 'raboof' ``` From 0be78ba0893f1d0165aceda1416476eeb76fb958 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stefan=20Feje=C5=A1?= Date: Mon, 25 Dec 2017 14:49:52 +0100 Subject: [PATCH 09/13] update snippets 0-All --- snippets/UUIDGenerator.md | 5 ++++- snippets/round.md | 5 ++++- snippets/runPromisesInSeries.md | 7 +++++-- snippets/sample.md | 5 ++++- snippets/scrollToTop.md | 5 ++++- snippets/select.md | 8 +++++--- snippets/shallowClone.md | 5 +++-- snippets/shuffle.md | 5 ++++- snippets/similarity.md | 5 ++++- snippets/sleep.md | 5 +++-- snippets/sortCharactersInString.md | 5 ++++- snippets/speechSynthesis.md | 5 ++++- snippets/spreadOver.md | 11 ++++++----- snippets/standardDeviation.md | 7 +++++-- snippets/symmetricDifference.md | 5 ++++- snippets/tail.md | 7 +++++-- snippets/take.md | 7 +++++-- snippets/takeRight.md | 7 +++++-- snippets/timeTaken.md | 7 +++++-- snippets/toCamelCase.md | 11 +++++++---- snippets/toDecimalMark.md | 5 ++++- snippets/toEnglishDate.md | 5 ++++- snippets/toKebabCase.md | 13 ++++++++----- snippets/toOrdinalSuffix.md | 5 ++++- snippets/toSnakeCase.md | 15 +++++++++------ snippets/truncateString.md | 5 ++++- snippets/truthCheckCollection.md | 7 +++++-- snippets/union.md | 5 ++++- snippets/validateNumber.md | 5 ++++- snippets/without.md | 5 ++++- snippets/words.md | 7 +++++-- snippets/zip.md | 7 +++++-- snippets/zipObject.md | 7 +++++-- 33 files changed, 155 insertions(+), 63 deletions(-) diff --git a/snippets/UUIDGenerator.md b/snippets/UUIDGenerator.md index 316659ea2..87300e5ed 100644 --- a/snippets/UUIDGenerator.md +++ b/snippets/UUIDGenerator.md @@ -9,5 +9,8 @@ const UUIDGenerator = () => ([1e7] + -1e3 + -4e3 + -8e3 + -1e11).replace(/[018]/g, c => (c ^ crypto.getRandomValues(new Uint8Array(1))[0] & 15 >> c / 4).toString(16) ); -// UUIDGenerator() -> '7982fcfe-5721-4632-bede-6000885be57d' +``` + +```js +UUIDGenerator() -> '7982fcfe-5721-4632-bede-6000885be57d' ``` diff --git a/snippets/round.md b/snippets/round.md index 7675c734f..9c6b55f2c 100644 --- a/snippets/round.md +++ b/snippets/round.md @@ -7,5 +7,8 @@ Omit the second argument, `decimals` to round to an integer. ```js const round = (n, decimals=0) => Number(`${Math.round(`${n}e${decimals}`)}e-${decimals}`); -// round(1.005, 2) -> 1.01 +``` + +```js +round(1.005, 2) -> 1.01 ``` diff --git a/snippets/runPromisesInSeries.md b/snippets/runPromisesInSeries.md index c1cedb147..9719ed6aa 100644 --- a/snippets/runPromisesInSeries.md +++ b/snippets/runPromisesInSeries.md @@ -6,6 +6,9 @@ Use `Array.reduce()` to create a promise chain, where each promise returns the n ```js const runPromisesInSeries = ps => ps.reduce((p, next) => p.then(next), Promise.resolve()); -// const delay = (d) => new Promise(r => setTimeout(r, d)) -// runPromisesInSeries([() => delay(1000), () => delay(2000)]) -> executes each promise sequentially, taking a total of 3 seconds to complete +``` + +```js +const delay = (d) => new Promise(r => setTimeout(r, d)) +runPromisesInSeries([() => delay(1000), () => delay(2000)]) -> //executes each promise sequentially, taking a total of 3 seconds to complete ``` diff --git a/snippets/sample.md b/snippets/sample.md index caf1941e3..078542224 100644 --- a/snippets/sample.md +++ b/snippets/sample.md @@ -7,5 +7,8 @@ This method also works with strings. ```js const sample = arr => arr[Math.floor(Math.random() * arr.length)]; -// sample([3, 7, 9, 11]) -> 9 +``` + +```js +sample([3, 7, 9, 11]) -> 9 ``` diff --git a/snippets/scrollToTop.md b/snippets/scrollToTop.md index 62cad2588..90c0342a8 100644 --- a/snippets/scrollToTop.md +++ b/snippets/scrollToTop.md @@ -13,5 +13,8 @@ const scrollToTop = () => { window.scrollTo(0, c - c / 8); } }; -// scrollToTop() +``` + +```js +scrollToTop() ``` diff --git a/snippets/select.md b/snippets/select.md index ee243bb8e..c3db1e047 100644 --- a/snippets/select.md +++ b/snippets/select.md @@ -7,7 +7,9 @@ If the property does not exists returns `undefined`. ```js const select = (from, selector) => selector.split('.').reduce((prev, cur) => prev && prev[cur], from); - -// const obj = {selector: {to: {val: 'val to select'}}}; -// select(obj, 'selector.to.val'); -> 'val to select' +``` + +```js +const obj = {selector: {to: {val: 'val to select'}}}; +select(obj, 'selector.to.val'); -> 'val to select' ``` diff --git a/snippets/shallowClone.md b/snippets/shallowClone.md index 0a6c25d82..cdef28d9b 100644 --- a/snippets/shallowClone.md +++ b/snippets/shallowClone.md @@ -6,9 +6,10 @@ Use `Object.assign()` and an empty object (`{}`) to create a shallow clone of th ```js const shallowClone = obj => Object.assign({}, obj); -/* +``` + +```js const a = { x: true, y: 1 }; const b = shallowClone(a); a === b -> false -*/ ``` diff --git a/snippets/shuffle.md b/snippets/shuffle.md index 27d7fd783..00b434d77 100644 --- a/snippets/shuffle.md +++ b/snippets/shuffle.md @@ -6,5 +6,8 @@ Use `Array.sort()` to reorder elements, using `Math.random()` in the comparator. ```js const shuffle = arr => arr.sort(() => Math.random() - 0.5); -// shuffle([1,2,3]) -> [2,3,1] +``` + +```js +shuffle([1,2,3]) -> [2,3,1] ``` diff --git a/snippets/similarity.md b/snippets/similarity.md index 1a2cc7ccb..e1f735be2 100644 --- a/snippets/similarity.md +++ b/snippets/similarity.md @@ -6,5 +6,8 @@ Use `filter()` to remove values that are not part of `values`, determined using ```js const similarity = (arr, values) => arr.filter(v => values.includes(v)); -// similarity([1,2,3], [1,2,4]) -> [1,2] +``` + +```js +similarity([1,2,3], [1,2,4]) -> [1,2] ``` diff --git a/snippets/sleep.md b/snippets/sleep.md index 66a45d2ff..69fd73059 100644 --- a/snippets/sleep.md +++ b/snippets/sleep.md @@ -6,11 +6,12 @@ Delay executing part of an `async` function, by putting it to sleep, returning a ```js const sleep = ms => new Promise(resolve => setTimeout(resolve, ms)); -/* +``` + +```js async function sleepyWork() { console.log('I\'m going to sleep for 1 second.'); await sleep(1000); console.log('I woke up after 1 second.'); } -*/ ``` diff --git a/snippets/sortCharactersInString.md b/snippets/sortCharactersInString.md index 79c7acc0f..4e7e68cf7 100644 --- a/snippets/sortCharactersInString.md +++ b/snippets/sortCharactersInString.md @@ -7,5 +7,8 @@ Split the string using `split('')`, `Array.sort()` utilizing `localeCompare()`, ```js const sortCharactersInString = str => str.split('').sort((a, b) => a.localeCompare(b)).join(''); -// sortCharactersInString('cabbage') -> 'aabbceg' +``` + +```js +sortCharactersInString('cabbage') -> 'aabbceg' ``` diff --git a/snippets/speechSynthesis.md b/snippets/speechSynthesis.md index cb8d150f4..2ccb55375 100644 --- a/snippets/speechSynthesis.md +++ b/snippets/speechSynthesis.md @@ -13,5 +13,8 @@ const speechSynthesis = message => { msg.voice = window.speechSynthesis.getVoices()[0]; window.speechSynthesis.speak(msg); }; -// speechSynthesis('Hello, World') -> plays the message +``` + +```js +speechSynthesis('Hello, World') -> // plays the message ``` diff --git a/snippets/spreadOver.md b/snippets/spreadOver.md index aff6281a6..d41b1cb36 100644 --- a/snippets/spreadOver.md +++ b/snippets/spreadOver.md @@ -6,9 +6,10 @@ Use closures and the spread operator (`...`) to map the array of arguments to th ```js const spreadOver = fn => argsArr => fn(...argsArr); -/* +``` + +```js const arrayMax = spreadOver(Math.max) -arrayMax([1,2,3]) // -> 3 -arrayMax([1,2,4]) // -> 4 -*/ -``` +arrayMax([1,2,3]) -> 3 +arrayMax([1,2,4]) -> 4 +``` diff --git a/snippets/standardDeviation.md b/snippets/standardDeviation.md index 51cf4a0dd..43d7139fd 100644 --- a/snippets/standardDeviation.md +++ b/snippets/standardDeviation.md @@ -14,6 +14,9 @@ const standardDeviation = (arr, usePopulation = false) => { .reduce((acc, val) => acc + val, 0) / (arr.length - (usePopulation ? 0 : 1)) ); }; -// standardDeviation([10,2,38,23,38,23,21]) -> 13.284434142114991 (sample) -// standardDeviation([10,2,38,23,38,23,21], true) -> 12.29899614287479 (population) +``` + +```js +standardDeviation([10,2,38,23,38,23,21]) -> 13.284434142114991 (sample) +standardDeviation([10,2,38,23,38,23,21], true) -> 12.29899614287479 (population) ``` diff --git a/snippets/symmetricDifference.md b/snippets/symmetricDifference.md index a25bb52ef..6879edb39 100644 --- a/snippets/symmetricDifference.md +++ b/snippets/symmetricDifference.md @@ -9,5 +9,8 @@ const symmetricDifference = (a, b) => { const sA = new Set(a), sB = new Set(b); return [...a.filter(x => !sB.has(x)), ...b.filter(x => !sA.has(x))]; } -// symmetricDifference([1,2,3], [1,2,4]) -> [3,4] +``` + +```js +symmetricDifference([1,2,3], [1,2,4]) -> [3,4] ``` diff --git a/snippets/tail.md b/snippets/tail.md index 9d84a17f1..69983d169 100644 --- a/snippets/tail.md +++ b/snippets/tail.md @@ -6,6 +6,9 @@ Return `arr.slice(1)` if the array's `length` is more than `1`, otherwise, retur ```js const tail = arr => arr.length > 1 ? arr.slice(1) : arr; -// tail([1,2,3]) -> [2,3] -// tail([1]) -> [1] +``` + +```js +tail([1,2,3]) -> [2,3] +tail([1]) -> [1] ``` diff --git a/snippets/take.md b/snippets/take.md index f6afa5dab..07d25262d 100644 --- a/snippets/take.md +++ b/snippets/take.md @@ -6,6 +6,9 @@ Use `Array.slice()` to create a slice of the array with `n` elements taken from ```js const take = (arr, n = 1) => arr.slice(0, n); -// take([1, 2, 3], 5) -> [1, 2, 3] -// take([1, 2, 3], 0) -> [] +``` + +```js +take([1, 2, 3], 5) -> [1, 2, 3] +take([1, 2, 3], 0) -> [] ``` diff --git a/snippets/takeRight.md b/snippets/takeRight.md index a8fc0e114..45d272ed0 100644 --- a/snippets/takeRight.md +++ b/snippets/takeRight.md @@ -6,6 +6,9 @@ Use `Array.slice()` to create a slice of the array with `n` elements taken from ```js const takeRight = (arr, n = 1) => arr.slice(arr.length - n, arr.length); -// takeRight([1, 2, 3], 2) -> [ 2, 3 ] -// takeRight([1, 2, 3]) -> [3] +``` + +```js +takeRight([1, 2, 3], 2) -> [ 2, 3 ] +takeRight([1, 2, 3]) -> [3] ``` diff --git a/snippets/timeTaken.md b/snippets/timeTaken.md index 2c7bc181f..b687edecf 100644 --- a/snippets/timeTaken.md +++ b/snippets/timeTaken.md @@ -9,6 +9,9 @@ const timeTaken = callback => { console.time('timeTaken'); const r = callback(); console.timeEnd('timeTaken'); return r; }; -// timeTaken(() => Math.pow(2, 10)) -> 1024 -// (logged): timeTaken: 0.02099609375ms +``` + +```js +timeTaken(() => Math.pow(2, 10)) -> 1024 +(logged): timeTaken: 0.02099609375ms ``` diff --git a/snippets/toCamelCase.md b/snippets/toCamelCase.md index 5100441af..3b0621050 100644 --- a/snippets/toCamelCase.md +++ b/snippets/toCamelCase.md @@ -12,8 +12,11 @@ const toCamelCase = str => { .join(''); return s.slice(0,1).toLowerCase() + s.slice(1) } -// toCamelCase("some_database_field_name") -> 'someDatabaseFieldName' -// toCamelCase("Some label that needs to be camelized") -> 'someLabelThatNeedsToBeCamelized' -// toCamelCase("some-javascript-property") -> 'someJavascriptProperty' -// toCamelCase("some-mixed_string with spaces_underscores-and-hyphens") -> 'someMixedStringWithSpacesUnderscoresAndHyphens' +``` + +```js +toCamelCase("some_database_field_name") -> 'someDatabaseFieldName' +toCamelCase("Some label that needs to be camelized") -> 'someLabelThatNeedsToBeCamelized' +toCamelCase("some-javascript-property") -> 'someJavascriptProperty' +toCamelCase("some-mixed_string with spaces_underscores-and-hyphens") -> 'someMixedStringWithSpacesUnderscoresAndHyphens' ``` diff --git a/snippets/toDecimalMark.md b/snippets/toDecimalMark.md index 94e821376..4a2716c0a 100644 --- a/snippets/toDecimalMark.md +++ b/snippets/toDecimalMark.md @@ -4,5 +4,8 @@ Use `toLocaleString()` to convert a float-point arithmetic to the [Decimal mark] ```js const toDecimalMark = num => num.toLocaleString("en-US"); -// toDecimalMark(12305030388.9087) -> "12,305,030,388.9087" +``` + +```js +toDecimalMark(12305030388.9087) -> "12,305,030,388.9087" ``` diff --git a/snippets/toEnglishDate.md b/snippets/toEnglishDate.md index 329eea38b..1d600c808 100644 --- a/snippets/toEnglishDate.md +++ b/snippets/toEnglishDate.md @@ -8,5 +8,8 @@ Throws an error if the passed time cannot be converted to a date. ```js const toEnglishDate = (time) => {try{return new Date(time).toISOString().split('T')[0].replace(/-/g, '/')}catch(e){return}}; -// toEnglishDate('09/21/2010') -> '21/09/2010' +``` + +```js +toEnglishDate('09/21/2010') -> '21/09/2010' ``` diff --git a/snippets/toKebabCase.md b/snippets/toKebabCase.md index 20c7e2546..50b7ead16 100644 --- a/snippets/toKebabCase.md +++ b/snippets/toKebabCase.md @@ -10,9 +10,12 @@ const toKebabCase = str => str && str.match(/[A-Z]{2,}(?=[A-Z][a-z]+[0-9]*|\b)|[A-Z]?[a-z]+[0-9]*|[A-Z]|[0-9]+/g) .map(x => x.toLowerCase()) .join('-'); -// toKebabCase("camelCase") -> 'camel-case' -// toKebabCase("some text") -> 'some-text' -// toKebabCase("some-mixed_string With spaces_underscores-and-hyphens") -> 'some-mixed-string-with-spaces-underscores-and-hyphens' -// toKebabCase("AllThe-small Things") -> "all-the-small-things" -// toKebabCase('IAmListeningToFMWhileLoadingDifferentURLOnMyBrowserAndAlsoEditingSomeXMLAndHTML') -> "i-am-listening-to-fm-while-loading-different-url-on-my-browser-and-also-editing-xml-and-html" +``` + +```js +toKebabCase("camelCase") -> 'camel-case' +toKebabCase("some text") -> 'some-text' +toKebabCase("some-mixed_string With spaces_underscores-and-hyphens") -> 'some-mixed-string-with-spaces-underscores-and-hyphens' +toKebabCase("AllThe-small Things") -> "all-the-small-things" +toKebabCase('IAmListeningToFMWhileLoadingDifferentURLOnMyBrowserAndAlsoEditingSomeXMLAndHTML') -> "i-am-listening-to-fm-while-loading-different-url-on-my-browser-and-also-editing-xml-and-html" ``` diff --git a/snippets/toOrdinalSuffix.md b/snippets/toOrdinalSuffix.md index 482286056..53541c162 100644 --- a/snippets/toOrdinalSuffix.md +++ b/snippets/toOrdinalSuffix.md @@ -13,5 +13,8 @@ const toOrdinalSuffix = num => { tPattern = [11, 12, 13, 14, 15, 16, 17, 18, 19]; return oPattern.includes(digits[0]) && !tPattern.includes(digits[1]) ? int + ordinals[digits[0] - 1] : int + ordinals[3]; }; -// toOrdinalSuffix("123") -> "123rd" +``` + +```js +toOrdinalSuffix("123") -> "123rd" ``` diff --git a/snippets/toSnakeCase.md b/snippets/toSnakeCase.md index 85b3af9b9..d978e7abc 100644 --- a/snippets/toSnakeCase.md +++ b/snippets/toSnakeCase.md @@ -10,10 +10,13 @@ const toSnakeCase = str =>{ str && str.match(/[A-Z]{2,}(?=[A-Z][a-z]+[0-9]*|\b)|[A-Z]?[a-z]+[0-9]*|[A-Z]|[0-9]+/g) .map(x => x.toLowerCase()) .join('_'); -// toSnakeCase("camelCase") -> 'camel_case' -// toSnakeCase("some text") -> 'some_text' -// toSnakeCase("some-javascript-property") -> 'some_javascript_property' -// toSnakeCase("some-mixed_string With spaces_underscores-and-hyphens") -> 'some_mixed_string_with_spaces_underscores_and_hyphens' -// toKebabCase("AllThe-small Things") -> "all_the_smal_things" -// toKebabCase('IAmListeningToFMWhileLoadingDifferentURLOnMyBrowserAndAlsoEditingSomeXMLAndHTML') -> "i_am_listening_to_fm_while_loading_different_url_on_my_browser_and_also_editing_some_xml_and_html" +``` + +```js +toSnakeCase("camelCase") -> 'camel_case' +toSnakeCase("some text") -> 'some_text' +toSnakeCase("some-javascript-property") -> 'some_javascript_property' +toSnakeCase("some-mixed_string With spaces_underscores-and-hyphens") -> 'some_mixed_string_with_spaces_underscores_and_hyphens' +toSnakeCase("AllThe-small Things") -> "all_the_smal_things" +toSnakeCase('IAmListeningToFMWhileLoadingDifferentURLOnMyBrowserAndAlsoEditingSomeXMLAndHTML') -> "i_am_listening_to_fm_while_loading_different_url_on_my_browser_and_also_editing_some_xml_and_html" ``` diff --git a/snippets/truncateString.md b/snippets/truncateString.md index 48924b0ae..56561cc7f 100644 --- a/snippets/truncateString.md +++ b/snippets/truncateString.md @@ -8,5 +8,8 @@ Return the string truncated to the desired length, with `...` appended to the en ```js const truncateString = (str, num) => str.length > num ? str.slice(0, num > 3 ? num - 3 : num) + '...' : str; -// truncateString('boomerang', 7) -> 'boom...' +``` + +```js +truncateString('boomerang', 7) -> 'boom...' ``` diff --git a/snippets/truthCheckCollection.md b/snippets/truthCheckCollection.md index 3c592d308..a2c4cb35e 100644 --- a/snippets/truthCheckCollection.md +++ b/snippets/truthCheckCollection.md @@ -3,8 +3,11 @@ Checks if the predicate (second argument) is truthy on all elements of a collection (first argument). Use `Array.every()` to check if each passed object has the specified property and if it returns a truthy value. - + ```js const truthCheckCollection = (collection, pre) => (collection.every(obj => obj[pre])); -// truthCheckCollection([{"user": "Tinky-Winky", "sex": "male"}, {"user": "Dipsy", "sex": "male"}], "sex") -> true +``` + +```js +truthCheckCollection([{"user": "Tinky-Winky", "sex": "male"}, {"user": "Dipsy", "sex": "male"}], "sex") -> true ``` diff --git a/snippets/union.md b/snippets/union.md index 27427a9aa..d141d2a3e 100644 --- a/snippets/union.md +++ b/snippets/union.md @@ -6,5 +6,8 @@ Create a `Set` with all values of `a` and `b` and convert to an array. ```js const union = (a, b) => Array.from(new Set([...a, ...b])); -// union([1,2,3], [4,3,2]) -> [1,2,3,4] +``` + +```js +union([1,2,3], [4,3,2]) -> [1,2,3,4] ``` diff --git a/snippets/validateNumber.md b/snippets/validateNumber.md index 8874cfce2..075e6b4f9 100644 --- a/snippets/validateNumber.md +++ b/snippets/validateNumber.md @@ -8,5 +8,8 @@ Use `Number()` to check if the coercion holds. ```js const validateNumber = n => !isNaN(parseFloat(n)) && isFinite(n) && Number(n) == n; -// validateNumber('10') -> true +``` + +```js +validateNumber('10') -> true ``` diff --git a/snippets/without.md b/snippets/without.md index 532ec26d9..044f2e8f6 100644 --- a/snippets/without.md +++ b/snippets/without.md @@ -8,5 +8,8 @@ _(For a snippet that mutates the original array see [`pull`](#pull))_ ```js const without = (arr, ...args) => arr.filter(v => !args.includes(v)); -// without([2, 1, 2, 3], 1, 2) -> [3] +``` + +```js +without([2, 1, 2, 3], 1, 2) -> [3] ``` diff --git a/snippets/words.md b/snippets/words.md index df6b258b7..47d70659d 100644 --- a/snippets/words.md +++ b/snippets/words.md @@ -7,6 +7,9 @@ Omit the second argument to use the default regex. ```js const words = (str, pattern = /[^a-zA-Z-]+/) => str.split(pattern).filter(Boolean); -// words("I love javaScript!!") -> ["I", "love", "javaScript"] -// words("python, javaScript & coffee") -> ["python", "javaScript", "coffee"] +``` + +```js +words("I love javaScript!!") -> ["I", "love", "javaScript"] +words("python, javaScript & coffee") -> ["python", "javaScript", "coffee"] ``` diff --git a/snippets/zip.md b/snippets/zip.md index c9a720e8e..1d3a9080d 100644 --- a/snippets/zip.md +++ b/snippets/zip.md @@ -13,6 +13,9 @@ const zip = (...arrays) => { return Array.from({length: arrays.length}, (_, k) => arrays[k][i]); }) } -//zip(['a', 'b'], [1, 2], [true, false]); -> [['a', 1, true], ['b', 2, false]] -//zip(['a'], [1, 2], [true, false]); -> [['a', 1, true], [undefined, 2, false]] +``` + +```js +zip(['a', 'b'], [1, 2], [true, false]); -> [['a', 1, true], ['b', 2, false]] +zip(['a'], [1, 2], [true, false]); -> [['a', 1, true], [undefined, 2, false]] ``` diff --git a/snippets/zipObject.md b/snippets/zipObject.md index f9214e7aa..a9ea71146 100644 --- a/snippets/zipObject.md +++ b/snippets/zipObject.md @@ -6,6 +6,9 @@ Since an object can have undefined values but not undefined property pointers, t ```js const zipObject = ( props, values ) => props.reduce( ( obj, prop, index ) => ( obj[prop] = values[index], obj ), {} ) -// zipObject(['a','b','c'], [1,2]) -> {a: 1, b: 2, c: undefined} -// zipObject(['a','b'], [1,2,3]) -> {a: 1, b: 2} +``` + +```js +zipObject(['a','b','c'], [1,2]) -> {a: 1, b: 2, c: undefined} +zipObject(['a','b'], [1,2,3]) -> {a: 1, b: 2} ``` From c46730fb27ae9edb86a4aa365d2265444d7dbb55 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stefan=20Feje=C5=A1?= Date: Mon, 25 Dec 2017 14:51:48 +0100 Subject: [PATCH 10/13] builder --- README.md | 888 ++++++++++++++++++++++++++++++++++++++---------------- 1 file changed, 633 insertions(+), 255 deletions(-) diff --git a/README.md b/README.md index ba36f06b3..0bde8d78f 100644 --- a/README.md +++ b/README.md @@ -185,12 +185,13 @@ Use a closure to call a stored key with stored arguments. ```js const call = ( key, ...args ) => context => context[ key ]( ...args ); -/* +``` + +```js Promise.resolve( [ 1, 2, 3 ] ).then( call('map', x => 2 * x ) ).then( console.log ) //[ 2, 4, 6 ] const map = call.bind(null, 'map') Promise.resolve( [ 1, 2, 3 ] ).then( map( x => 2 * x ) ).then( console.log ) //[ 2, 4, 6 ] -*/ -``` +``` [⬆ back to top](#table-of-contents) @@ -202,14 +203,15 @@ Given a function, return a closure that collects all inputs into an array-accept ```js const collectInto = fn => ( ...args ) => fn( args ); -/* +``` + +```js const Pall = collectInto( Promise.all.bind(Promise) ) let p1 = Promise.resolve(1) let p2 = Promise.resolve(2) let p3 = new Promise((resolve) => setTimeout(resolve,2000,3)) Pall(p1, p2, p3).then(console.log) -*/ -``` +``` [⬆ back to top](#table-of-contents) @@ -221,7 +223,9 @@ Return a closure that takes variadic inputs, and splices the last argument to ma ```js const flip = fn => (...args) => fn(args.pop(), ...args) -/* +``` + +```js let a = {name: 'John Smith'} let b = {} const mergeFrom = flip(Object.assign) @@ -229,7 +233,6 @@ let mergePerson = mergeFrom.bind(null, a) mergePerson(b) // == b b = {} Object.assign(b, a) // == b -*/ ``` [⬆ back to top](#table-of-contents) @@ -250,8 +253,11 @@ const promisify = func => func(...args, (err, result) => err ? reject(err) : resolve(result)) ); -// const delay = promisify((d, cb) => setTimeout(cb, d)) -// delay(2000).then(() => console.log('Hi!')) -> Promise resolves after 2s +``` + +```js +const delay = promisify((d, cb) => setTimeout(cb, d)) +delay(2000).then(() => console.log('Hi!')) -> // Promise resolves after 2s ``` [⬆ back to top](#table-of-contents) @@ -264,12 +270,13 @@ Use closures and the spread operator (`...`) to map the array of arguments to th ```js const spreadOver = fn => argsArr => fn(...argsArr); -/* +``` + +```js const arrayMax = spreadOver(Math.max) -arrayMax([1,2,3]) // -> 3 -arrayMax([1,2,4]) // -> 4 -*/ -``` +arrayMax([1,2,3]) -> 3 +arrayMax([1,2,4]) -> 4 +``` [⬆ back to top](#table-of-contents) ## Array @@ -285,8 +292,11 @@ const arrayGcd = arr =>{ const gcd = (x, y) => !y ? x : gcd(y, x % y); return arr.reduce((a,b) => gcd(a,b)); } -// arrayGcd([1,2,3,4,5]) -> 1 -// arrayGcd([4,8,12]) -> 4 +``` + +```js +arrayGcd([1,2,3,4,5]) -> 1 +arrayGcd([4,8,12]) -> 4 ``` [⬆ back to top](#table-of-contents) @@ -300,11 +310,14 @@ Use `Array.reduce()` and the `lcm` formula (uses recursion) to calculate the low ```js const arrayLcm = arr =>{ const gcd = (x, y) => !y ? x : gcd(y, x % y); - const lcm = (x, y) => (x*y)/gcd(x, y); + const lcm = (x, y) => (x*y)/gcd(x, y); return arr.reduce((a,b) => lcm(a,b)); } -// arrayLcm([1,2,3,4,5]) -> 60 -// arrayLcm([4,8,12]) -> 24 +``` + +```js +arrayLcm([1,2,3,4,5]) -> 60 +arrayLcm([4,8,12]) -> 24 ``` [⬆ back to top](#table-of-contents) @@ -317,7 +330,10 @@ Use `Math.max()` combined with the spread operator (`...`) to get the maximum va ```js const arrayMax = arr => Math.max(...arr); -// arrayMax([10, 1, 5]) -> 10 +``` + +```js +arrayMax([10, 1, 5]) -> 10 ``` [⬆ back to top](#table-of-contents) @@ -330,7 +346,10 @@ Use `Math.min()` combined with the spread operator (`...`) to get the minimum va ```js const arrayMin = arr => Math.min(...arr); -// arrayMin([10, 1, 5]) -> 1 +``` + +```js +arrayMin([10, 1, 5]) -> 1 ``` [⬆ back to top](#table-of-contents) @@ -346,7 +365,10 @@ If the original array can't be split evenly, the final chunk will contain the re ```js const chunk = (arr, size) => Array.from({length: Math.ceil(arr.length / size)}, (v, i) => arr.slice(i * size, i * size + size)); -// chunk([1,2,3,4,5], 2) -> [[1,2],[3,4],[5]] +``` + +```js +chunk([1,2,3,4,5], 2) -> [[1,2],[3,4],[5]] ``` [⬆ back to top](#table-of-contents) @@ -359,7 +381,10 @@ Use `Array.filter()` to filter out falsey values (`false`, `null`, `0`, `""`, `u ```js const compact = arr => arr.filter(Boolean); -// compact([0, 1, false, 2, '', 3, 'a', 'e'*23, NaN, 's', 34]) -> [ 1, 2, 3, 'a', 's', 34 ] +``` + +```js +compact([0, 1, false, 2, '', 3, 'a', 'e'*23, NaN, 's', 34]) -> [ 1, 2, 3, 'a', 's', 34 ] ``` [⬆ back to top](#table-of-contents) @@ -372,7 +397,10 @@ Use `Array.reduce()` to increment a counter each time you encounter the specific ```js const countOccurrences = (arr, value) => arr.reduce((a, v) => v === value ? a + 1 : a + 0, 0); -// countOccurrences([1,1,2,1,2,3], 1) -> 3 +``` + +```js +countOccurrences([1,1,2,1,2,3], 1) -> 3 ``` [⬆ back to top](#table-of-contents) @@ -387,7 +415,10 @@ Recursively flatten each element that is an array. ```js const deepFlatten = arr => [].concat(...arr.map(v => Array.isArray(v) ? deepFlatten(v) : v)); -// deepFlatten([1,[2],[[3],4],5]) -> [1,2,3,4,5] +``` + +```js +deepFlatten([1,[2],[[3],4],5]) -> [1,2,3,4,5] ``` [⬆ back to top](#table-of-contents) @@ -400,7 +431,10 @@ Create a `Set` from `b`, then use `Array.filter()` on `a` to only keep values no ```js const difference = (a, b) => { const s = new Set(b); return a.filter(x => !s.has(x)); }; -// difference([1,2,3], [1,2,4]) -> [3] +``` + +```js +difference([1,2,3], [1,2,4]) -> [3] ``` [⬆ back to top](#table-of-contents) @@ -413,7 +447,10 @@ Use `Array.filter()` and `Array.find()` to find the appropriate values. ```js const differenceWith = (arr, val, comp) => arr.filter(a => !val.find(b => comp(a, b))) -// differenceWith([1, 1.2, 1.5, 3], [1.9, 3], (a,b) => Math.round(a) == Math.round(b)) -> [1, 1.2] +``` + +```js +differenceWith([1, 1.2, 1.5, 3], [1.9, 3], (a,b) => Math.round(a) == Math.round(b)) -> [1, 1.2] ``` [⬆ back to top](#table-of-contents) @@ -426,7 +463,10 @@ Use ES6 `Set` and the `...rest` operator to discard all duplicated values. ```js const distinctValuesOfArray = arr => [...new Set(arr)]; -// distinctValuesOfArray([1,2,2,3,4,4,5]) -> [1,2,3,4,5] +``` + +```js +distinctValuesOfArray([1,2,2,3,4,4,5]) -> [1,2,3,4,5] ``` [⬆ back to top](#table-of-contents) @@ -443,7 +483,10 @@ const dropElements = (arr, func) => { while (arr.length > 0 && !func(arr[0])) arr = arr.slice(1); return arr; }; -// dropElements([1, 2, 3, 4], n => n >= 3) -> [3,4] +``` + +```js +dropElements([1, 2, 3, 4], n => n >= 3) -> [3,4] ``` [⬆ back to top](#table-of-contents) @@ -456,9 +499,12 @@ Use `Array.slice()` to slice the remove the specified number of elements from th ```js const dropRight = (arr, n = 1) => arr.slice(0, -n); -//dropRight([1,2,3]) -> [1,2] -//dropRight([1,2,3], 2) -> [1] -//dropRight([1,2,3], 42) -> [] +``` + +```js +dropRight([1,2,3]) -> [1,2] +dropRight([1,2,3], 2) -> [1] +dropRight([1,2,3], 42) -> [] ``` [⬆ back to top](#table-of-contents) @@ -471,7 +517,10 @@ Use `Array.filter()` to create a new array that contains every nth element of a ```js const everyNth = (arr, nth) => arr.filter((e, i) => i % nth === nth - 1); -// everyNth([1,2,3,4,5,6], 2) -> [ 2, 4, 6 ] +``` + +```js +everyNth([1,2,3,4,5,6], 2) -> [ 2, 4, 6 ] ``` [⬆ back to top](#table-of-contents) @@ -484,7 +533,10 @@ Use `Array.filter()` for an array containing only the unique values. ```js const filterNonUnique = arr => arr.filter(i => arr.indexOf(i) === arr.lastIndexOf(i)); -// filterNonUnique([1,2,2,3,4,4,5]) -> [1,3,5] +``` + +```js +filterNonUnique([1,2,2,3,4,4,5]) -> [1,3,5] ``` [⬆ back to top](#table-of-contents) @@ -497,7 +549,10 @@ Use a new array and concatenate it with the spread input array causing a shallow ```js const flatten = arr => [ ].concat( ...arr ); -// flatten([1,[2],3,4]) -> [1,2,3,4] +``` + +```js +flatten([1,[2],3,4]) -> [1,2,3,4] ``` [⬆ back to top](#table-of-contents) @@ -515,7 +570,10 @@ Omit the second element, `depth` to flatten only to a depth of `1` (single flatt const flattenDepth = (arr, depth = 1) => depth != 1 ? arr.reduce((a, v) => a.concat(Array.isArray(v) ? flattenDepth(v, depth - 1) : v), []) : arr.reduce((a, v) => a.concat(v), []); -// flattenDepth([1,[2],[[[3],4],5]], 2) -> [1,2,[3],4,5] +``` + +```js +flatten([1,[2],3,4]) -> [1,2,3,4] ``` [⬆ back to top](#table-of-contents) @@ -531,8 +589,11 @@ Use `Array.reduce()` to create an object, where the keys are produced from the m const groupBy = (arr, func) => arr.map(typeof func === 'function' ? func : val => val[func]) .reduce((acc, val, i) => { acc[val] = (acc[val] || []).concat(arr[i]); return acc; }, {}); -// groupBy([6.1, 4.2, 6.3], Math.floor) -> {4: [4.2], 6: [6.1, 6.3]} -// groupBy(['one', 'two', 'three'], 'length') -> {3: ['one', 'two'], 5: ['three']} +``` + +```js +groupBy([6.1, 4.2, 6.3], Math.floor) -> {4: [4.2], 6: [6.1, 6.3]} +groupBy(['one', 'two', 'three'], 'length') -> {3: ['one', 'two'], 5: ['three']} ``` [⬆ back to top](#table-of-contents) @@ -545,7 +606,10 @@ Use `arr[0]` to return the first element of the passed array. ```js const head = arr => arr[0]; -// head([1,2,3]) -> 1 +``` + +```js +head([1,2,3]) -> 1 ``` [⬆ back to top](#table-of-contents) @@ -558,7 +622,10 @@ Use `arr.slice(0,-1)` to return all but the last element of the array. ```js const initial = arr => arr.slice(0, -1); -// initial([1,2,3]) -> [1,2] +``` + +```js +initial([1,2,3]) -> [1,2] ``` [⬆ back to top](#table-of-contents) @@ -571,7 +638,10 @@ Use `Array.map()` to generate h rows where each is a new array of size w initial ```js const initialize2DArray = (w, h, val = null) => Array(h).fill().map(() => Array(w).fill(val)); -// initializeArrayWithRange(2, 2, 0) -> [[0,0], [0,0]] +``` + +```js +initialize2DArray(2, 2, 0) -> [[0,0], [0,0]] ``` [⬆ back to top](#table-of-contents) @@ -584,10 +654,13 @@ Use `Array((end + 1) - start)` to create an array of the desired length, `Array. You can omit `start` to use a default value of `0`. ```js -const initializeArrayWithRange = (end, start = 0) => +const initializeArrayWithRange = (end, start = 0) => Array.from({ length: (end + 1) - start }).map((v, i) => i + start); -// initializeArrayWithRange(5) -> [0,1,2,3,4,5] -// initializeArrayWithRange(7, 3) -> [3,4,5,6,7] +``` + +```js +initializeArrayWithRange(5) -> [0,1,2,3,4,5] +initializeArrayWithRange(7, 3) -> [3,4,5,6,7] ``` [⬆ back to top](#table-of-contents) @@ -601,7 +674,10 @@ You can omit `value` to use a default value of `0`. ```js const initializeArrayWithValues = (n, value = 0) => Array(n).fill(value); -// initializeArrayWithValues(5, 2) -> [2,2,2,2,2] +``` + +```js +initializeArrayWithValues(5, 2) -> [2,2,2,2,2] ``` [⬆ back to top](#table-of-contents) @@ -614,7 +690,10 @@ Create a `Set` from `b`, then use `Array.filter()` on `a` to only keep values co ```js const intersection = (a, b) => { const s = new Set(b); return a.filter(x => s.has(x)); }; -// intersection([1,2,3], [4,3,2]) -> [2,3] +``` + +```js +intersection([1,2,3], [4,3,2]) -> [2,3] ``` [⬆ back to top](#table-of-contents) @@ -627,7 +706,10 @@ Use `arr.length - 1` to compute the index of the last element of the given array ```js const last = arr => arr[arr.length - 1]; -// last([1,2,3]) -> 3 +``` + +```js +last([1,2,3]) -> 3 ``` [⬆ back to top](#table-of-contents) @@ -639,12 +721,13 @@ Maps the values of an array to an object using a function, where the key-value p Use an anonymous inner function scope to declare an undefined memory space, using closures to store a return value. Use a new `Array` to store the array with a map of the function over its data set and a comma operator to return a second step, without needing to move from one context to another (due to closures and order of operations). ```js -const mapObject = (arr, fn) => +const mapObject = (arr, fn) => (a => (a = [arr, arr.map(fn)], a[0].reduce( (acc,val,ind) => (acc[val] = a[1][ind], acc), {}) )) ( ); -/* +``` + +```js const squareIt = arr => mapObject(arr, a => a*a) squareIt([1,2,3]) // { 1: 1, 2: 4, 3: 9 } -*/ ``` [⬆ back to top](#table-of-contents) @@ -659,8 +742,11 @@ Omit the second argument, `n`, to get the first element of the array. ```js const nthElement = (arr, n=0) => (n>0? arr.slice(n,n+1) : arr.slice(n))[0]; -// nthElement(['a','b','c'],1) -> 'b' -// nthElement(['a','b','b'],-3) -> 'a' +``` + +```js +nthElement(['a','b','c'],1) -> 'b' +nthElement(['a','b','b'],-3) -> 'a' ``` [⬆ back to top](#table-of-contents) @@ -674,7 +760,10 @@ Use `Array.reduce()` to convert the filtered/picked keys back to an object with ```js const pick = (obj, arr) => arr.reduce((acc, curr) => (curr in obj && (acc[curr] = obj[curr]), acc), {}); -// pick({ 'a': 1, 'b': '2', 'c': 3 }, ['a', 'c']) -> { 'a': 1, 'c': 3 } +``` + +```js +pick({ 'a': 1, 'b': '2', 'c': 3 }, ['a', 'c']) -> { 'a': 1, 'c': 3 } ``` [⬆ back to top](#table-of-contents) @@ -692,17 +781,19 @@ _(For a snippet that does not mutate the original array see [`without`](#without const pull = (arr, ...args) => { let argState = Array.isArray(args[0]) ? args[0] : args; let pulled = arr.filter((v, i) => !argState.includes(v)); - arr.length = 0; + arr.length = 0; pulled.forEach(v => arr.push(v)); }; +``` -// let myArray1 = ['a', 'b', 'c', 'a', 'b', 'c']; -// pull(myArray1, 'a', 'c'); -// console.log(myArray1) -> [ 'b', 'b' ] +```js +let myArray1 = ['a', 'b', 'c', 'a', 'b', 'c']; +pull(myArray1, 'a', 'c'); +console.log(myArray1) -> [ 'b', 'b' ] -// let myArray2 = ['a', 'b', 'c', 'a', 'b', 'c']; -// pull(myArray2, ['a', 'c']); -// console.log(myArray2) -> [ 'b', 'b' ] +let myArray2 = ['a', 'b', 'c', 'a', 'b', 'c']; +pull(myArray2, ['a', 'c']); +console.log(myArray2) -> [ 'b', 'b' ] ``` [⬆ back to top](#table-of-contents) @@ -713,23 +804,25 @@ Mutates the original array to filter out the values at the specified indexes. Use `Array.filter()` and `Array.includes()` to pull out the values that are not needed. Use `Array.length = 0` to mutate the passed in an array by resetting it's length to zero and `Array.push()` to re-populate it with only the pulled values. -Use `Array.push()` to keep track of pulled values +Use `Array.push()` to keep track of pulled values ```js const pullAtIndex = (arr, pullArr) => { let removed = []; let pulled = arr.map((v, i) => pullArr.includes(i) ? removed.push(v) : v) .filter((v, i) => !pullArr.includes(i)) - arr.length = 0; + arr.length = 0; pulled.forEach(v => arr.push(v)); return removed; } +``` -// let myArray = ['a', 'b', 'c', 'd']; -// let pulled = pullAtIndex(myArray, [1, 3]); +```js +let myArray = ['a', 'b', 'c', 'd']; +let pulled = pullAtIndex(myArray, [1, 3]); -// console.log(myArray); -> [ 'a', 'c' ] -// console.log(pulled); -> [ 'b', 'd' ] +console.log(myArray); -> [ 'a', 'c' ] +console.log(pulled); -> [ 'b', 'd' ] ``` [⬆ back to top](#table-of-contents) @@ -740,23 +833,24 @@ Mutates the original array to filter out the values specified. Returns the remov Use `Array.filter()` and `Array.includes()` to pull out the values that are not needed. Use `Array.length = 0` to mutate the passed in an array by resetting it's length to zero and `Array.push()` to re-populate it with only the pulled values. -Use `Array.push()` to keep track of pulled values +Use `Array.push()` to keep track of pulled values ```js const pullAtValue = (arr, pullArr) => { - let removed = [], + let removed = [], pushToRemove = arr.forEach((v, i) => pullArr.includes(v) ? removed.push(v) : v), mutateTo = arr.filter((v, i) => !pullArr.includes(v)); arr.length = 0; mutateTo.forEach(v => arr.push(v)); return removed; } -/* +``` + +```js let myArray = ['a', 'b', 'c', 'd']; let pulled = pullAtValue(myArray, ['b', 'd']); console.log(myArray); -> [ 'a', 'c' ] console.log(pulled); -> [ 'b', 'd' ] -*/ ``` [⬆ back to top](#table-of-contents) @@ -774,7 +868,10 @@ const remove = (arr, func) => arr.splice(arr.indexOf(val), 1); return acc.concat(val); }, []) : []; -// remove([1, 2, 3, 4], n => n % 2 == 0) -> [2, 4] +``` + +```js +remove([1, 2, 3, 4], n => n % 2 == 0) -> [2, 4] ``` [⬆ back to top](#table-of-contents) @@ -788,7 +885,10 @@ This method also works with strings. ```js const sample = arr => arr[Math.floor(Math.random() * arr.length)]; -// sample([3, 7, 9, 11]) -> 9 +``` + +```js +sample([3, 7, 9, 11]) -> 9 ``` [⬆ back to top](#table-of-contents) @@ -801,7 +901,10 @@ Use `Array.sort()` to reorder elements, using `Math.random()` in the comparator. ```js const shuffle = arr => arr.sort(() => Math.random() - 0.5); -// shuffle([1,2,3]) -> [2,3,1] +``` + +```js +shuffle([1,2,3]) -> [2,3,1] ``` [⬆ back to top](#table-of-contents) @@ -814,7 +917,10 @@ Use `filter()` to remove values that are not part of `values`, determined using ```js const similarity = (arr, values) => arr.filter(v => values.includes(v)); -// similarity([1,2,3], [1,2,4]) -> [1,2] +``` + +```js +similarity([1,2,3], [1,2,4]) -> [1,2] ``` [⬆ back to top](#table-of-contents) @@ -830,7 +936,10 @@ const symmetricDifference = (a, b) => { const sA = new Set(a), sB = new Set(b); return [...a.filter(x => !sB.has(x)), ...b.filter(x => !sA.has(x))]; } -// symmetricDifference([1,2,3], [1,2,4]) -> [3,4] +``` + +```js +symmetricDifference([1,2,3], [1,2,4]) -> [3,4] ``` [⬆ back to top](#table-of-contents) @@ -843,8 +952,11 @@ Return `arr.slice(1)` if the array's `length` is more than `1`, otherwise, retur ```js const tail = arr => arr.length > 1 ? arr.slice(1) : arr; -// tail([1,2,3]) -> [2,3] -// tail([1]) -> [1] +``` + +```js +tail([1,2,3]) -> [2,3] +tail([1]) -> [1] ``` [⬆ back to top](#table-of-contents) @@ -857,8 +969,11 @@ Use `Array.slice()` to create a slice of the array with `n` elements taken from ```js const take = (arr, n = 1) => arr.slice(0, n); -// take([1, 2, 3], 5) -> [1, 2, 3] -// take([1, 2, 3], 0) -> [] +``` + +```js +take([1, 2, 3], 5) -> [1, 2, 3] +take([1, 2, 3], 0) -> [] ``` [⬆ back to top](#table-of-contents) @@ -871,8 +986,11 @@ Use `Array.slice()` to create a slice of the array with `n` elements taken from ```js const takeRight = (arr, n = 1) => arr.slice(arr.length - n, arr.length); -// takeRight([1, 2, 3], 2) -> [ 2, 3 ] -// takeRight([1, 2, 3]) -> [3] +``` + +```js +takeRight([1, 2, 3], 2) -> [ 2, 3 ] +takeRight([1, 2, 3]) -> [3] ``` [⬆ back to top](#table-of-contents) @@ -885,7 +1003,10 @@ Create a `Set` with all values of `a` and `b` and convert to an array. ```js const union = (a, b) => Array.from(new Set([...a, ...b])); -// union([1,2,3], [4,3,2]) -> [1,2,3,4] +``` + +```js +union([1,2,3], [4,3,2]) -> [1,2,3,4] ``` [⬆ back to top](#table-of-contents) @@ -900,7 +1021,10 @@ _(For a snippet that mutates the original array see [`pull`](#pull))_ ```js const without = (arr, ...args) => arr.filter(v => !args.includes(v)); -// without([2, 1, 2, 3], 1, 2) -> [3] +``` + +```js +without([2, 1, 2, 3], 1, 2) -> [3] ``` [⬆ back to top](#table-of-contents) @@ -920,8 +1044,11 @@ const zip = (...arrays) => { return Array.from({length: arrays.length}, (_, k) => arrays[k][i]); }) } -//zip(['a', 'b'], [1, 2], [true, false]); -> [['a', 1, true], ['b', 2, false]] -//zip(['a'], [1, 2], [true, false]); -> [['a', 1, true], [undefined, 2, false]] +``` + +```js +zip(['a', 'b'], [1, 2], [true, false]); -> [['a', 1, true], ['b', 2, false]] +zip(['a'], [1, 2], [true, false]); -> [['a', 1, true], [undefined, 2, false]] ``` [⬆ back to top](#table-of-contents) @@ -934,8 +1061,11 @@ Since an object can have undefined values but not undefined property pointers, t ```js const zipObject = ( props, values ) => props.reduce( ( obj, prop, index ) => ( obj[prop] = values[index], obj ), {} ) -// zipObject(['a','b','c'], [1,2]) -> {a: 1, b: 2, c: undefined} -// zipObject(['a','b'], [1,2,3]) -> {a: 1, b: 2} +``` + +```js +zipObject(['a','b','c'], [1,2]) -> {a: 1, b: 2, c: undefined} +zipObject(['a','b'], [1,2,3]) -> {a: 1, b: 2} ``` [⬆ back to top](#table-of-contents) @@ -949,7 +1079,10 @@ Use `Array.map()` and `document.querySelector()` to create a list of html tags. ```js const arrayToHtmlList = (arr, listID) => arr.map(item => document.querySelector("#"+listID).innerHTML+=`
  • ${item}
  • `); -// arrayToHtmlList(['item 1', 'item 2'],'myListID') +``` + +```js +arrayToHtmlList(['item 1', 'item 2'],'myListID') ``` [⬆ back to top](#table-of-contents) @@ -963,6 +1096,9 @@ Use `scrollY`, `scrollHeight` and `clientHeight` to determine if the bottom of t ```js const bottomVisible = () => document.documentElement.clientHeight + window.scrollY >= (document.documentElement.scrollHeight || document.documentElement.clientHeight); +``` + +```js // bottomVisible() -> true ``` @@ -976,7 +1112,10 @@ Use `window.location.href` to get current URL. ```js const currentURL = () => window.location.href; -// currentUrl() -> 'https://google.com' +``` + +```js +currentUrl() -> 'https://google.com' ``` [⬆ back to top](#table-of-contents) @@ -989,8 +1128,11 @@ Use a regular expression to test the `navigator.userAgent` property to figure ou ```js const detectDeviceType = () => /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent) ? "Mobile" : "Desktop"; -// detectDeviceType() -> "Mobile" -// detectDeviceType() -> "Desktop" +``` + +```js +detectDeviceType() -> "Mobile" +detectDeviceType() -> "Desktop" ``` [⬆ back to top](#table-of-contents) @@ -1013,9 +1155,12 @@ const elementIsVisibleInViewport = (el, partiallyVisible = false) => { ((left > 0 && left < innerWidth) || (right > 0 && right < innerWidth)) : top >= 0 && left >= 0 && bottom <= innerHeight && right <= innerWidth; }; +``` + +```js // e.g. 100x100 viewport and a 10x10px element at position {top: -1, left: 0, bottom: 9, right: 10} -// elementIsVisibleInViewport(el) -> false (not fully visible) -// elementIsVisibleInViewport(el, true) -> true (partially visible) +elementIsVisibleInViewport(el) -> false // (not fully visible) +elementIsVisibleInViewport(el, true) -> true // (partially visible) ``` [⬆ back to top](#table-of-contents) @@ -1031,7 +1176,10 @@ You can omit `el` to use a default value of `window`. const getScrollPosition = (el = window) => ({x: (el.pageXOffset !== undefined) ? el.pageXOffset : el.scrollLeft, y: (el.pageYOffset !== undefined) ? el.pageYOffset : el.scrollTop}); -// getScrollPosition() -> {x: 0, y: 200} +``` + +```js +getScrollPosition() -> {x: 0, y: 200} ``` [⬆ back to top](#table-of-contents) @@ -1048,7 +1196,10 @@ const getURLParameters = url => url.match(/([^?=&]+)(=([^&]*))/g).reduce( (a, v) => (a[v.slice(0, v.indexOf('='))] = v.slice(v.indexOf('=') + 1), a), {} ); -// getURLParameters('http://url.com/page?name=Adam&surname=Smith') -> {name: 'Adam', surname: 'Smith'} +``` + +```js +getURLParameters('http://url.com/page?name=Adam&surname=Smith') -> {name: 'Adam', surname: 'Smith'} ``` [⬆ back to top](#table-of-contents) @@ -1077,7 +1228,10 @@ Pass a second argument to simulate a link click (`true` - default) or an HTTP re ```js const redirect = (url, asLink = true) => asLink ? window.location.href = url : window.location.replace(url); -// redirect('https://google.com') +``` + +```js +redirect('https://google.com') ``` [⬆ back to top](#table-of-contents) @@ -1097,7 +1251,10 @@ const scrollToTop = () => { window.scrollTo(0, c - c / 8); } }; -// scrollToTop() +``` + +```js +scrollToTop() ``` [⬆ back to top](#table-of-contents) @@ -1111,7 +1268,10 @@ Calculate the difference (in days) between two `Date` objects. ```js const getDaysDiffBetweenDates = (dateInitial, dateFinal) => (dateFinal - dateInitial) / (1000 * 3600 * 24); -// getDaysDiffBetweenDates(new Date("2017-12-13"), new Date("2017-12-22")) -> 9 +``` + +```js +getDaysDiffBetweenDates(new Date("2017-12-13"), new Date("2017-12-22")) -> 9 ``` [⬆ back to top](#table-of-contents) @@ -1127,7 +1287,10 @@ const JSONToDate = arr => { const dt = new Date(parseInt(arr.toString().substr(6))); return `${ dt.getDate() }/${ dt.getMonth() + 1 }/${ dt.getFullYear() }` }; -// JSONToDate(/Date(1489525200000)/) -> "14/3/2017" +``` + +```js +JSONToDate(/Date(1489525200000)/) -> "14/3/2017" ``` [⬆ back to top](#table-of-contents) @@ -1142,7 +1305,10 @@ Throws an error if the passed time cannot be converted to a date. ```js const toEnglishDate = (time) => {try{return new Date(time).toISOString().split('T')[0].replace(/-/g, '/')}catch(e){return}}; -// toEnglishDate('09/21/2010') -> '21/09/2010' +``` + +```js +toEnglishDate('09/21/2010') -> '21/09/2010' ``` [⬆ back to top](#table-of-contents) @@ -1156,13 +1322,14 @@ Loop through an array of functions containing asynchronous events, calling `next ```js const chainAsync = fns => { let curr = 0; const next = () => fns[curr++](next); next(); }; -/* +``` + +```js chainAsync([ next => { console.log('0 seconds'); setTimeout(next, 1000); }, next => { console.log('1 second'); setTimeout(next, 1000); }, next => { console.log('2 seconds'); } ]) -*/ ``` [⬆ back to top](#table-of-contents) @@ -1176,12 +1343,13 @@ The last (rightmost) function can accept one or more arguments; the remaining fu ```js const compose = (...fns) => fns.reduce((f, g) => (...args) => f(g(...args))); -/* +``` + +```js const add5 = x => x + 5 const multiply = (x, y) => x * y const multiplyAndAdd5 = compose(add5, multiply) multiplyAndAdd5(5, 2) -> 15 -*/ ``` [⬆ back to top](#table-of-contents) @@ -1200,8 +1368,11 @@ const curry = (fn, arity = fn.length, ...args) => arity <= args.length ? fn(...args) : curry.bind(null, fn, arity, ...args); -// curry(Math.pow)(2)(10) -> 1024 -// curry(Math.min, 3)(10)(50)(2) -> 2 +``` + +```js +curry(Math.pow)(2)(10) -> 1024 +curry(Math.min, 3)(10)(50)(2) -> 2 ``` [⬆ back to top](#table-of-contents) @@ -1214,7 +1385,10 @@ Use `console.debug()` and the `name` property of the passed method to log the me ```js const functionName = fn => (console.debug(fn.name), fn); -// functionName(Math.max) -> max (logged in debug channel of console) +``` + +```js +functionName(Math.max) -> max (logged in debug channel of console) ``` [⬆ back to top](#table-of-contents) @@ -1228,12 +1402,13 @@ The first (leftmost) function can accept one or more arguments; the remaining fu ```js const pipeFunctions = (...fns) => fns.reduce((f, g) => (...args) => g(f(...args))); -/* +``` + +```js const add5 = x => x + 5 const multiply = (x, y) => x * y const multiplyAndAdd5 = pipeFunctions(multiply, add5) multiplyAndAdd5(5, 2) -> 15 -*/ ``` [⬆ back to top](#table-of-contents) @@ -1246,8 +1421,11 @@ Use `Array.reduce()` to create a promise chain, where each promise returns the n ```js const runPromisesInSeries = ps => ps.reduce((p, next) => p.then(next), Promise.resolve()); -// const delay = (d) => new Promise(r => setTimeout(r, d)) -// runPromisesInSeries([() => delay(1000), () => delay(2000)]) -> executes each promise sequentially, taking a total of 3 seconds to complete +``` + +```js +const delay = (d) => new Promise(r => setTimeout(r, d)) +runPromisesInSeries([() => delay(1000), () => delay(2000)]) -> //executes each promise sequentially, taking a total of 3 seconds to complete ``` [⬆ back to top](#table-of-contents) @@ -1260,13 +1438,14 @@ Delay executing part of an `async` function, by putting it to sleep, returning a ```js const sleep = ms => new Promise(resolve => setTimeout(resolve, ms)); -/* +``` + +```js async function sleepyWork() { console.log('I\'m going to sleep for 1 second.'); await sleep(1000); console.log('I woke up after 1 second.'); } -*/ ``` [⬆ back to top](#table-of-contents) @@ -1280,8 +1459,11 @@ Take a predicate function and apply `not` to it with its arguments. ```js const negate = func => (...args) => !func(...args); -// filter([1, 2, 3, 4, 5, 6], negate(isEven)) -> [1, 3, 5] -// negate(isOdd)(1) -> false +``` + +```js +filter([1, 2, 3, 4, 5, 6], negate(isEven)) -> [1, 3, 5] +negate(isOdd)(1) -> false ``` [⬆ back to top](#table-of-contents) @@ -1295,7 +1477,10 @@ Use `Array.reduce()` to add each value to an accumulator, initialized with a val ```js const arrayAverage = arr => arr.reduce((acc, val) => acc + val, 0) / arr.length; -// arrayAverage([1,2,3]) -> 2 +``` + +```js +arrayAverage([1,2,3]) -> 2 ``` [⬆ back to top](#table-of-contents) @@ -1308,7 +1493,10 @@ Use `Array.reduce()` to add each value to an accumulator, initialized with a val ```js const arraySum = arr => arr.reduce((acc, val) => acc + val, 0); -// arraySum([1,2,3,4]) -> 10 +``` + +```js +arraySum([1,2,3,4]) -> 10 ``` [⬆ back to top](#table-of-contents) @@ -1317,18 +1505,21 @@ const arraySum = arr => arr.reduce((acc, val) => acc + val, 0); Clamps `num` within the inclusive `lower` and `upper` bounds. -If `lower` is greater than `upper`, swap them. -If `num` falls within the range, return `num`. +If `lower` is greater than `upper`, swap them. +If `num` falls within the range, return `num`. Otherwise, return the nearest number in the range. ```js const clampNumber = (num, lower, upper) => { if(lower > upper) upper = [lower, lower = upper][0]; - return (num>=lower && num<=upper) ? num : ((num < lower) ? lower : upper) + return (num>=lower && num<=upper) ? num : ((num < lower) ? lower : upper) } -// clampNumber(2, 3, 5) -> 3 -// clampNumber(1, -1, -5) -> -1 -// clampNumber(3, 2, 4) -> 3 +``` + +```js +clampNumber(2, 3, 5) -> 3 +clampNumber(1, -1, -5) -> -1 +clampNumber(3, 2, 4) -> 3 ``` [⬆ back to top](#table-of-contents) @@ -1341,8 +1532,11 @@ If `n` is even, return `n/2`. Otherwise, return `3n+1`. ```js const collatz = n => (n % 2 == 0) ? (n / 2) : (3 * n + 1); -// collatz(8) --> 4 -// collatz(5) --> 16 +``` + +```js +collatz(8) -> 4 +collatz(5) -> 16 ``` [⬆ back to top](#table-of-contents) @@ -1356,7 +1550,10 @@ Use `Array.map()` and `parseInt()` to transform each value to an integer. ```js const digitize = n => [...''+n].map(i => parseInt(i)); -// digitize(2334) -> [2, 3, 3, 4] +``` + +```js +differenceWith([1, 1.2, 1.5, 3], [1.9, 3], (a,b) => Math.round(a) == Math.round(b)) -> [1, 1.2] ``` [⬆ back to top](#table-of-contents) @@ -1369,7 +1566,10 @@ Use `Math.hypot()` to calculate the Euclidean distance between two points. ```js const distance = (x0, y0, x1, y1) => Math.hypot(x1 - x0, y1 - y0); -// distance(1,1, 2,3) -> 2.23606797749979 +``` + +```js +distance(1,1, 2,3) -> 2.23606797749979 ``` [⬆ back to top](#table-of-contents) @@ -1387,7 +1587,10 @@ Throws an exception if `n` is a negative number. const factorial = n => n < 0 ? (() => { throw new TypeError('Negative numbers are not allowed!') })() : n <= 1 ? 1 : n * factorial(n - 1); -// factorial(6) -> 720 +``` + +```js +factorial(6) -> 720 ``` [⬆ back to top](#table-of-contents) @@ -1402,7 +1605,10 @@ Use `Array.reduce()` to add values into the array, using the sum of the last two ```js const fibonacci = n => Array.from({ length: n}).reduce((acc, val, i) => acc.concat(i > 1 ? acc[i - 1] + acc[i - 2] : i), []); -// fibonacci(5) -> [0,1,1,2,3] +``` + +```js +factorial(6) -> 720 ``` [⬆ back to top](#table-of-contents) @@ -1416,7 +1622,10 @@ Use a mathematical formula to calculate the number of fibonacci numbers until `n ```js const fibonacciCountUntilNum = num => Math.ceil(Math.log(num * Math.sqrt(5) + 1/2) / Math.log((Math.sqrt(5)+1)/2)); -// fibonacciCountUntilNum(10) -> 7 +``` + +```js +fibonacciCountUntilNum(10) -> 7 ``` [⬆ back to top](#table-of-contents) @@ -1434,7 +1643,10 @@ const fibonacciUntilNum = num => { let n = Math.ceil(Math.log(num * Math.sqrt(5) + 1/2) / Math.log((Math.sqrt(5)+1)/2)); return Array.from({ length: n}).reduce((acc, val, i) => acc.concat(i > 1 ? acc[i - 1] + acc[i - 2] : i), []); } -// fibonacciUntilNum(15) -> [0,1,1,2,3,5,8,13] +``` + +```js +fibonacciCountUntilNum(10) -> 7 ``` [⬆ back to top](#table-of-contents) @@ -1449,7 +1661,10 @@ Otherwise, return the GCD of `y` and the remainder of the division `x/y`. ```js const gcd = (x, y) => !y ? x : gcd(y, x % y); -// gcd (8, 36) -> 4 +``` + +```js +gcd (8, 36) -> 4 ``` [⬆ back to top](#table-of-contents) @@ -1464,14 +1679,17 @@ Count and return the number of `1`s in the string, using `match(/1/g)`. ```js const hammingDistance = (num1, num2) => ((num1 ^ num2).toString(2).match(/1/g) || '').length; -// hammingDistance(2,3) -> 1 +``` + +```js +hammingDistance(2,3) -> 1 ``` [⬆ back to top](#table-of-contents) ### inRange -Checks if the given number falls within the given range. +Checks if the given number falls within the given range. Use arithmetic comparison to check if the given number is in the specified range. If the second parameter, `end`, is not specified, the range is considered to be from `0` to `start`. @@ -1481,10 +1699,13 @@ const inRange = (n, start, end=null) => { if(end && start > end) end = [start, start=end][0]; return (end == null) ? (n>=0 && n=start && n true -// inRange(3, 4) -> true -// inRange(2, 3, 5) -> false -// inrange(3, 2) -> false +``` + +```js +inRange(3, 2, 5) -> true +inRange(3, 4) -> true +inRange(2, 3, 5) -> false +inrange(3, 2) -> false ``` [⬆ back to top](#table-of-contents) @@ -1496,11 +1717,14 @@ Checks if the given number is an Armstrong number or not. Convert the given number into an array of digits. Use `Math.pow()` to get the appropriate power for each digit and sum them up. If the sum is equal to the number itself, return `true` otherwise `false`. ```js -const isArmstrongNumber = digits => +const isArmstrongNumber = digits => ( arr => arr.reduce( ( a, d ) => a + Math.pow( parseInt( d ), arr.length ), 0 ) == digits ? true : false )( ( digits+'' ).split( '' ) ); -// isArmstrongNumber(1634) -> true -// isArmstrongNumber(371) -> true -// isArmstrongNumber(56) -> false +``` + +```js +isArmstrongNumber(1634) -> true +isArmstrongNumber(371) -> true +isArmstrongNumber(56) -> false ``` [⬆ back to top](#table-of-contents) @@ -1513,7 +1737,10 @@ Use the modulo operator (`%`) to check if the remainder is equal to `0`. ```js const isDivisible = (dividend, divisor) => dividend % divisor === 0; -// isDivisible(6,3) -> true +``` + +```js +isDivisible(6,3) -> true ``` [⬆ back to top](#table-of-contents) @@ -1527,7 +1754,10 @@ Returns `true` if the number is even, `false` if the number is odd. ```js const isEven = num => num % 2 === 0; -// isEven(3) -> false +``` + +```js +isEven(3) -> false ``` [⬆ back to top](#table-of-contents) @@ -1536,7 +1766,7 @@ const isEven = num => num % 2 === 0; Checks if the provided integer is a prime number. -Check numbers from `2` to the square root of the given number. +Check numbers from `2` to the square root of the given number. Return `false` if any of them divides the given number, else return `true`, unless the number is less than `2`. ```js @@ -1545,8 +1775,11 @@ const isPrime = num => { for (var i = 2; i * i <= boundary; i++) if (num % i == 0) return false; return num >= 2; }; -// isPrime(11) -> true -// isPrime(12) -> false +``` + +```js +isPrime(11) -> true +isPrime(12) -> false ``` [⬆ back to top](#table-of-contents) @@ -1563,7 +1796,10 @@ const lcm = (x,y) => { const gcd = (x, y) => !y ? x : gcd(y, x % y); return Math.abs(x*y)/(gcd(x,y)); }; -// lcm(12,7) -> 84 +``` + +```js +lcm(12,7) -> 84 ``` [⬆ back to top](#table-of-contents) @@ -1580,8 +1816,11 @@ const median = arr => { const mid = Math.floor(arr.length / 2), nums = [...arr].sort((a, b) => a - b); return arr.length % 2 !== 0 ? nums[mid] : (nums[mid - 1] + nums[mid]) / 2; }; -// median([5,6,50,1,-5]) -> 5 -// median([0,10,-2,7]) -> 3.5 +``` + +```js +median([5,6,50,1,-5]) -> 5 +median([0,10,-2,7]) -> 3.5 ``` [⬆ back to top](#table-of-contents) @@ -1598,8 +1837,11 @@ const palindrome = str => { const s = str.toLowerCase().replace(/[\W_]/g,''); return s === s.split('').reverse().join(''); } -// palindrome('taco cat') -> true - ``` +``` + +```js +palindrome('taco cat') -> true +``` [⬆ back to top](#table-of-contents) @@ -1612,8 +1854,11 @@ Use `Array.reduce()` to calculate how many numbers are below the value and how m ```js const percentile = (arr, val) => 100 * arr.reduce((acc,v) => acc + (v < val ? 1 : 0) + (v === val ? 0.5 : 0), 0) / arr.length; -// percentile([1,2,3,4,5,6,7,8,9,10], 6) -> 55 - ``` +``` + +```js +percentile([1,2,3,4,5,6,7,8,9,10], 6) -> 55 +``` [⬆ back to top](#table-of-contents) @@ -1626,12 +1871,15 @@ Use `Array.reduce()` combined with `Array.map()` to iterate over elements and co ```js const powerset = arr => arr.reduce((a, v) => a.concat(a.map(r => [v].concat(r))), [[]]); -// powerset([1,2]) -> [[], [1], [2], [2,1]] +``` + +```js +powerset([1,2]) -> [[], [1], [2], [2,1]] ``` [⬆ back to top](#table-of-contents) -### primes +### primes Generates primes up to a given number, using the Sieve of Eratosthenes. @@ -1639,13 +1887,16 @@ Generate an array from `2` to the given number. Use `Array.filter()` to filter o ```js const primes = num => { - let arr = Array.from({length:num-1}).map((x,i)=> i+2), + let arr = Array.from({length:num-1}).map((x,i)=> i+2), sqroot = Math.floor(Math.sqrt(num)), numsTillSqroot = Array.from({length:sqroot-1}).map((x,i)=> i+2); numsTillSqroot.forEach(x => arr = arr.filter(y => ((y%x)!==0)||(y==x))); - return arr; + return arr; } -// primes(10) -> [2,3,5,7] +``` + +```js +primes(10) -> [2,3,5,7] ``` [⬆ back to top](#table-of-contents) @@ -1658,7 +1909,10 @@ Use `Math.random()` to generate a random number and map it to the desired range, ```js const randomIntegerInRange = (min, max) => Math.floor(Math.random() * (max - min + 1)) + min; -// randomIntegerInRange(0, 5) -> 2 +``` + +```js +randomIntegerInRange(0, 5) -> 2 ``` [⬆ back to top](#table-of-contents) @@ -1671,7 +1925,10 @@ Use `Math.random()` to generate a random value, map it to the desired range usin ```js const randomNumberInRange = (min, max) => Math.random() * (max - min) + min; -// randomNumberInRange(2,10) -> 6.0211363285087005 +``` + +```js +randomNumberInRange(2,10) -> 6.0211363285087005 ``` [⬆ back to top](#table-of-contents) @@ -1685,7 +1942,10 @@ Omit the second argument, `decimals` to round to an integer. ```js const round = (n, decimals=0) => Number(`${Math.round(`${n}e${decimals}`)}e-${decimals}`); -// round(1.005, 2) -> 1.01 +``` + +```js +round(1.005, 2) -> 1.01 ``` [⬆ back to top](#table-of-contents) @@ -1706,8 +1966,11 @@ const standardDeviation = (arr, usePopulation = false) => { .reduce((acc, val) => acc + val, 0) / (arr.length - (usePopulation ? 0 : 1)) ); }; -// standardDeviation([10,2,38,23,38,23,21]) -> 13.284434142114991 (sample) -// standardDeviation([10,2,38,23,38,23,21], true) -> 12.29899614287479 (population) +``` + +```js +standardDeviation([10,2,38,23,38,23,21]) -> 13.284434142114991 (sample) +standardDeviation([10,2,38,23,38,23,21], true) -> 12.29899614287479 (population) ``` [⬆ back to top](#table-of-contents) @@ -1728,7 +1991,10 @@ const speechSynthesis = message => { msg.voice = window.speechSynthesis.getVoices()[0]; window.speechSynthesis.speak(msg); }; -// speechSynthesis('Hello, World') -> plays the message +``` + +```js +speechSynthesis('Hello, World') -> // plays the message ``` [⬆ back to top](#table-of-contents) @@ -1743,7 +2009,10 @@ Use `fs.writeFile()`, template literals and `JSON.stringify()` to write a `json` ```js const fs = require('fs'); const JSONToFile = (obj, filename) => fs.writeFile(`${filename}.json`, JSON.stringify(obj, null, 2)) -// JSONToFile({test: "is passed"}, 'testJsonFile') -> writes the object to 'testJsonFile.json' +``` + +```js +JSONToFile({test: "is passed"}, 'testJsonFile') -> writes the object to 'testJsonFile.json' ``` [⬆ back to top](#table-of-contents) @@ -1759,15 +2028,16 @@ creating an array from contents of file by `split`ing file content line by line ```js const fs = require('fs'); const readFileLines = filename => fs.readFileSync(filename).toString('UTF8').split('\n'); -/* - contents of test.txt : - line1 - line2 - line3 - ___________________________ - let arr = readFileLines('test.txt') - console.log(arr) // -> ['line1', 'line2', 'line3'] - */ +``` + +```js +contents of test.txt : + line1 + line2 + line3 + ___________________________ +let arr = readFileLines('test.txt') +console.log(arr) // -> ['line1', 'line2', 'line3'] ``` [⬆ back to top](#table-of-contents) @@ -1790,11 +2060,12 @@ const cleanObj = (obj, keysToKeep = [], childIndicator) => { } }) } -/* - const testObj = {a: 1, b: 2, children: {a: 1, b: 2}} - cleanObj(testObj, ["a"],"children") - console.log(testObj)// { a: 1, children : { a: 1}} -*/ +``` + +```js +const testObj = {a: 1, b: 2, children: {a: 1, b: 2}} +cleanObj(testObj, ["a"],"children") +console.log(testObj) // { a: 1, children : { a: 1}} ``` [⬆ back to top](#table-of-contents) @@ -1807,7 +2078,10 @@ Use `Array.reduce()` to create and combine key-value pairs. ```js const objectFromPairs = arr => arr.reduce((a, v) => (a[v[0]] = v[1], a), {}); -// objectFromPairs([['a',1],['b',2]]) -> {a: 1, b: 2} +``` + +```js +objectFromPairs([['a',1],['b',2]]) -> {a: 1, b: 2} ``` [⬆ back to top](#table-of-contents) @@ -1820,7 +2094,10 @@ Use `Object.keys()` and `Array.map()` to iterate over the object's keys and prod ```js const objectToPairs = obj => Object.keys(obj).map(k => [k, obj[k]]); -// objectToPairs({a: 1, b: 2}) -> [['a',1],['b',2]]) +``` + +```js +objectToPairs({a: 1, b: 2}) -> [['a',1],['b',2]]) ``` [⬆ back to top](#table-of-contents) @@ -1843,12 +2120,13 @@ const orderBy = (arr, props, orders) => return acc; }, 0) ); -/* +``` + +```js const users = [{ 'name': 'fred', 'age': 48 },{ 'name': 'barney', 'age': 36 }, { 'name': 'fred', 'age': 40 },{ 'name': 'barney', 'age': 34 }]; orderby(users, ['name', 'age'], ['asc', 'desc']) -> [{name: 'barney', age: 36}, {name: 'barney', age: 34}, {name: 'fred', age: 48}, {name: 'fred', age: 40}] orderby(users, ['name', 'age']) -> [{name: 'barney', age: 34}, {name: 'barney', age: 36}, {name: 'fred', age: 40}, {name: 'fred', age: 48}] -*/ ``` [⬆ back to top](#table-of-contents) @@ -1862,9 +2140,11 @@ If the property does not exists returns `undefined`. ```js const select = (from, selector) => selector.split('.').reduce((prev, cur) => prev && prev[cur], from); +``` -// const obj = {selector: {to: {val: 'val to select'}}}; -// select(obj, 'selector.to.val'); -> 'val to select' +```js +const obj = {selector: {to: {val: 'val to select'}}}; +select(obj, 'selector.to.val'); -> 'val to select' ``` [⬆ back to top](#table-of-contents) @@ -1877,11 +2157,12 @@ Use `Object.assign()` and an empty object (`{}`) to create a shallow clone of th ```js const shallowClone = obj => Object.assign({}, obj); -/* +``` + +```js const a = { x: true, y: 1 }; const b = shallowClone(a); a === b -> false -*/ ``` [⬆ back to top](#table-of-contents) @@ -1891,10 +2172,13 @@ a === b -> false Checks if the predicate (second argument) is truthy on all elements of a collection (first argument). Use `Array.every()` to check if each passed object has the specified property and if it returns a truthy value. - + ```js const truthCheckCollection = (collection, pre) => (collection.every(obj => obj[pre])); -// truthCheckCollection([{"user": "Tinky-Winky", "sex": "male"}, {"user": "Dipsy", "sex": "male"}], "sex") -> true +``` + +```js +truthCheckCollection([{"user": "Tinky-Winky", "sex": "male"}, {"user": "Dipsy", "sex": "male"}], "sex") -> true ``` [⬆ back to top](#table-of-contents) @@ -1915,7 +2199,10 @@ const anagrams = str => { return str.split('').reduce((acc, letter, i) => acc.concat(anagrams(str.slice(0, i) + str.slice(i + 1)).map(val => letter + val)), []); }; -// anagrams('abc') -> ['abc','acb','bac','bca','cab','cba'] +``` + +```js +anagrams('abc') -> ['abc','acb','bac','bca','cab','cba'] ``` [⬆ back to top](#table-of-contents) @@ -1930,8 +2217,11 @@ Omit the `lowerRest` parameter to keep the rest of the string intact, or set it ```js const capitalize = ([first,...rest], lowerRest = false) => first.toUpperCase() + (lowerRest ? rest.join('').toLowerCase() : rest.join('')); -// capitalize('myName') -> 'MyName' -// capitalize('myName', true) -> 'Myname' +``` + +```js +capitalize('fooBar') -> 'FooBar' +capitalize('fooBar', true) -> 'Foobar' ``` [⬆ back to top](#table-of-contents) @@ -1944,7 +2234,10 @@ Use `replace()` to match the first character of each word and `toUpperCase()` to ```js const capitalizeEveryWord = str => str.replace(/\b[a-z]/g, char => char.toUpperCase()); -// capitalizeEveryWord('hello world!') -> 'Hello World!' +``` + +```js +capitalizeEveryWord('hello world!') -> 'Hello World!' ``` [⬆ back to top](#table-of-contents) @@ -1957,8 +2250,11 @@ Use a regular expression to count the number of vowels `(A, E, I, O, U)` in a `s ```js const countVowels = str => (str.match(/[aeiou]/ig) || []).length; -// countVowels('foobar') -> 3 -// countVowels('gym') -> 0 +``` + +```js +countVowels('foobar') -> 3 +countVowels('gym') -> 0 ``` [⬆ back to top](#table-of-contents) @@ -1971,7 +2267,10 @@ Use `replace()` to escape special characters. ```js const escapeRegExp = str => str.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); -// escapeRegExp('(test)') -> \\(test\\) +``` + +```js +escapeRegExp('(test)') -> \\(test\\) ``` [⬆ back to top](#table-of-contents) @@ -1987,9 +2286,12 @@ Omit the second argument to use a default separator of `_`. const fromCamelCase = (str, separator = '_') => str.replace(/([a-z\d])([A-Z])/g, '$1' + separator + '$2') .replace(/([A-Z]+)([A-Z][a-z\d]+)/g, '$1' + separator + '$2').toLowerCase(); -// fromCamelCase('someDatabaseFieldName', ' ') -> 'some database field name' -// fromCamelCase('someLabelThatNeedsToBeCamelized', '-') -> 'some-label-that-needs-to-be-camelized' -// fromCamelCase('someJavascriptProperty', '_') -> 'some_javascript_property' +``` + +```js +fromCamelCase('someDatabaseFieldName', ' ') -> 'some database field name' +fromCamelCase('someLabelThatNeedsToBeCamelized', '-') -> 'some-label-that-needs-to-be-camelized' +fromCamelCase('someJavascriptProperty', '_') -> 'some_javascript_property' ``` [⬆ back to top](#table-of-contents) @@ -2004,8 +2306,11 @@ If no string is provided the default is `""` and the default number of times is const repeatString = (str="",num=2) => { return num >= 0 ? str.repeat(num) : str; } -// repeatString("abc",3) -> 'abcabcabc' -// repeatString("abc") -> 'abcabc' +``` + +```js +repeatString("abc",3) -> 'abcabcabc' +repeatString("abc") -> 'abcabc' ``` [⬆ back to top](#table-of-contents) @@ -2019,7 +2324,10 @@ Combine characters to get a string using `join('')`. ```js const reverseString = str => str.split('').reverse().join(''); -// reverseString('foobar') -> 'raboof' +``` + +```js +reverseString('foobar') -> 'raboof' ``` [⬆ back to top](#table-of-contents) @@ -2033,7 +2341,10 @@ Split the string using `split('')`, `Array.sort()` utilizing `localeCompare()`, ```js const sortCharactersInString = str => str.split('').sort((a, b) => a.localeCompare(b)).join(''); -// sortCharactersInString('cabbage') -> 'aabbceg' +``` + +```js +sortCharactersInString('cabbage') -> 'aabbceg' ``` [⬆ back to top](#table-of-contents) @@ -2052,10 +2363,13 @@ const toCamelCase = str => { .join(''); return s.slice(0,1).toLowerCase() + s.slice(1) } -// toCamelCase("some_database_field_name") -> 'someDatabaseFieldName' -// toCamelCase("Some label that needs to be camelized") -> 'someLabelThatNeedsToBeCamelized' -// toCamelCase("some-javascript-property") -> 'someJavascriptProperty' -// toCamelCase("some-mixed_string with spaces_underscores-and-hyphens") -> 'someMixedStringWithSpacesUnderscoresAndHyphens' +``` + +```js +toCamelCase("some_database_field_name") -> 'someDatabaseFieldName' +toCamelCase("Some label that needs to be camelized") -> 'someLabelThatNeedsToBeCamelized' +toCamelCase("some-javascript-property") -> 'someJavascriptProperty' +toCamelCase("some-mixed_string with spaces_underscores-and-hyphens") -> 'someMixedStringWithSpacesUnderscoresAndHyphens' ``` [⬆ back to top](#table-of-contents) @@ -2072,11 +2386,14 @@ const toKebabCase = str => str && str.match(/[A-Z]{2,}(?=[A-Z][a-z]+[0-9]*|\b)|[A-Z]?[a-z]+[0-9]*|[A-Z]|[0-9]+/g) .map(x => x.toLowerCase()) .join('-'); -// toKebabCase("camelCase") -> 'camel-case' -// toKebabCase("some text") -> 'some-text' -// toKebabCase("some-mixed_string With spaces_underscores-and-hyphens") -> 'some-mixed-string-with-spaces-underscores-and-hyphens' -// toKebabCase("AllThe-small Things") -> "all-the-small-things" -// toKebabCase('IAmListeningToFMWhileLoadingDifferentURLOnMyBrowserAndAlsoEditingSomeXMLAndHTML') -> "i-am-listening-to-fm-while-loading-different-url-on-my-browser-and-also-editing-xml-and-html" +``` + +```js +toKebabCase("camelCase") -> 'camel-case' +toKebabCase("some text") -> 'some-text' +toKebabCase("some-mixed_string With spaces_underscores-and-hyphens") -> 'some-mixed-string-with-spaces-underscores-and-hyphens' +toKebabCase("AllThe-small Things") -> "all-the-small-things" +toKebabCase('IAmListeningToFMWhileLoadingDifferentURLOnMyBrowserAndAlsoEditingSomeXMLAndHTML') -> "i-am-listening-to-fm-while-loading-different-url-on-my-browser-and-also-editing-xml-and-html" ``` [⬆ back to top](#table-of-contents) @@ -2093,12 +2410,15 @@ const toSnakeCase = str =>{ str && str.match(/[A-Z]{2,}(?=[A-Z][a-z]+[0-9]*|\b)|[A-Z]?[a-z]+[0-9]*|[A-Z]|[0-9]+/g) .map(x => x.toLowerCase()) .join('_'); -// toSnakeCase("camelCase") -> 'camel_case' -// toSnakeCase("some text") -> 'some_text' -// toSnakeCase("some-javascript-property") -> 'some_javascript_property' -// toSnakeCase("some-mixed_string With spaces_underscores-and-hyphens") -> 'some_mixed_string_with_spaces_underscores_and_hyphens' -// toKebabCase("AllThe-small Things") -> "all_the_smal_things" -// toKebabCase('IAmListeningToFMWhileLoadingDifferentURLOnMyBrowserAndAlsoEditingSomeXMLAndHTML') -> "i_am_listening_to_fm_while_loading_different_url_on_my_browser_and_also_editing_some_xml_and_html" +``` + +```js +toSnakeCase("camelCase") -> 'camel_case' +toSnakeCase("some text") -> 'some_text' +toSnakeCase("some-javascript-property") -> 'some_javascript_property' +toSnakeCase("some-mixed_string With spaces_underscores-and-hyphens") -> 'some_mixed_string_with_spaces_underscores_and_hyphens' +toSnakeCase("AllThe-small Things") -> "all_the_smal_things" +toSnakeCase('IAmListeningToFMWhileLoadingDifferentURLOnMyBrowserAndAlsoEditingSomeXMLAndHTML') -> "i_am_listening_to_fm_while_loading_different_url_on_my_browser_and_also_editing_some_xml_and_html" ``` [⬆ back to top](#table-of-contents) @@ -2113,7 +2433,10 @@ Return the string truncated to the desired length, with `...` appended to the en ```js const truncateString = (str, num) => str.length > num ? str.slice(0, num > 3 ? num - 3 : num) + '...' : str; -// truncateString('boomerang', 7) -> 'boom...' +``` + +```js +truncateString('boomerang', 7) -> 'boom...' ``` [⬆ back to top](#table-of-contents) @@ -2127,8 +2450,11 @@ Omit the second argument to use the default regex. ```js const words = (str, pattern = /[^a-zA-Z-]+/) => str.split(pattern).filter(Boolean); -// words("I love javaScript!!") -> ["I", "love", "javaScript"] -// words("python, javaScript & coffee") -> ["python", "javaScript", "coffee"] +``` + +```js +words("I love javaScript!!") -> ["I", "love", "javaScript"] +words("python, javaScript & coffee") -> ["python", "javaScript", "coffee"] ``` [⬆ back to top](#table-of-contents) @@ -2142,7 +2468,10 @@ Use `Array.find()` to return the first non `null`/`undefined` argument. ```js const coalesce = (...args) => args.find(_ => ![undefined, null].includes(_)) -// coalesce(null,undefined,"",NaN, "Waldo") -> "" +``` + +```js +coalesce(null,undefined,"",NaN, "Waldo") -> "" ``` [⬆ back to top](#table-of-contents) @@ -2155,8 +2484,11 @@ Use `Array.find()` to return the first argument that returns `true` from the pro ```js const coalesceFactory = valid => (...args) => args.find(valid); -// const customCoalesce = coalesceFactory(_ => ![null, undefined, "", NaN].includes(_)) -// customCoalesce(undefined, null, NaN, "", "Waldo") //-> "Waldo" +``` + +```js +const customCoalesce = coalesceFactory(_ => ![null, undefined, "", NaN].includes(_)) +customCoalesce(undefined, null, NaN, "", "Waldo") // "Waldo" ``` [⬆ back to top](#table-of-contents) @@ -2170,8 +2502,11 @@ Use `Array.map()`, `split()` and `Array.join()` to join the mapped array for con ```js const extendHex = shortHex => '#' + shortHex.slice(shortHex.startsWith('#') ? 1 : 0).split('').map(x => x+x).join('') -// extendHex('#03f') -> '#0033ff' -// extendHex('05a') -> '#0055aa' +``` + +```js +extendHex('#03f') -> '#0033ff' +extendHex('05a') -> '#0055aa' ``` [⬆ back to top](#table-of-contents) @@ -2185,7 +2520,10 @@ Returns lowercased constructor name of value, "undefined" or "null" if value is ```js const getType = v => v === undefined ? 'undefined' : v === null ? 'null' : v.constructor.name.toLowerCase(); -// getType(new Set([1,2,3])) -> "set" +``` + +```js +getType(new Set([1,2,3])) -> "set" ``` [⬆ back to top](#table-of-contents) @@ -2208,10 +2546,12 @@ const hexToRGB = hex => { + ((h & (alpha ? 0x0000ff00 : 0x0000ff)) >>> (alpha ? 8 : 0)) + (alpha ? `, ${(h & 0x000000ff)}` : '') + ')'; }; -// hexToRGB('#27ae60ff') -> 'rgba(39, 174, 96, 255)' -// hexToRGB('27ae60') -> 'rgb(39, 174, 96)' -// hexToRGB('#fff') -> 'rgb(255, 255, 255)' +``` +```js +hexToRGB('#27ae60ff') -> 'rgba(39, 174, 96, 255)' +hexToRGB('27ae60') -> 'rgb(39, 174, 96)' +hexToRGB('#fff') -> 'rgb(255, 255, 255)' ``` [⬆ back to top](#table-of-contents) @@ -2224,8 +2564,11 @@ Use `Array.isArray()` to check if a value is classified as an array. ```js const isArray = val => !!val && Array.isArray(val); -// isArray(null) -> false -// isArray([1]) -> true +``` + +```js +isArray(null) -> false +isArray([1]) -> true ``` [⬆ back to top](#table-of-contents) @@ -2238,8 +2581,11 @@ Use `typeof` to check if a value is classified as a boolean primitive. ```js const isBoolean = val => typeof val === 'boolean'; -// isBoolean(null) -> false -// isBoolean(false) -> true +``` + +```js +isBoolean(null) -> false +isBoolean(false) -> true ``` [⬆ back to top](#table-of-contents) @@ -2252,8 +2598,11 @@ Use `typeof` to check if a value is classified as a function primitive. ```js const isFunction = val => val && typeof val === 'function'; -// isFunction('x') -> false -// isFunction(x => x) -> true +``` + +```js +isFunction('x') -> false +isFunction(x => x) -> true ``` [⬆ back to top](#table-of-contents) @@ -2266,10 +2615,12 @@ Use `typeof` to check if a value is classified as a number primitive. ```js const isNumber = val => typeof val === 'number'; -// isNumber('1') -> false -// isNumber(1) -> true ``` +```js +isNumber('1') -> false +isNumber(1) -> true +``` [⬆ back to top](#table-of-contents) ### isString @@ -2280,8 +2631,11 @@ Use `typeof` to check if a value is classified as a string primitive. ```js const isString = val => typeof val === 'string'; -// isString(10) -> false -// isString('10') -> true +``` + +```js +isString(10) -> false +isString('10') -> true ``` [⬆ back to top](#table-of-contents) @@ -2294,8 +2648,11 @@ Use `typeof` to check if a value is classified as a symbol primitive. ```js const isSymbol = val => typeof val === 'symbol'; -// isSymbol('x') -> false -// isSymbol(Symbol('x')) -> true +``` + +```js +isSymbol('x') -> false +isSymbol(Symbol('x')) -> true ``` [⬆ back to top](#table-of-contents) @@ -2304,13 +2661,16 @@ const isSymbol = val => typeof val === 'symbol'; Generates a random hexadecimal color code. -Use `Math.random` to generate a random 24-bit(6x4bits) hexadecimal number. Use bit shifting and then convert it to an hexadecimal String using `toString(16)`. +Use `Math.random` to generate a random 24-bit(6x4bits) hexadecimal number. Use bit shifting and then convert it to an hexadecimal String using `toString(16)`. ```js const randomHexColorCode = () => '#'+(Math.random()*0xFFFFFF<<0).toString(16); -// randomHexColorCode() -> "#e34155" -// randomHexColorCode() -> "#fd73a6" -// randomHexColorCode() -> "#4144c6" +``` + +```js +randomHexColorCode() -> "#e34155" +randomHexColorCode() -> "#fd73a6" +randomHexColorCode() -> "#4144c6" ``` [⬆ back to top](#table-of-contents) @@ -2323,7 +2683,10 @@ Convert given RGB parameters to hexadecimal string using bitwise left-shift oper ```js const RGBToHex = (r, g, b) => ((r << 16) + (g << 8) + b).toString(16).padStart(6, '0'); -// RGBToHex(255, 165, 1) -> 'ffa501' +``` + +```js +RGBToHex(255, 165, 1) -> 'ffa501' ``` [⬆ back to top](#table-of-contents) @@ -2339,8 +2702,11 @@ const timeTaken = callback => { console.time('timeTaken'); const r = callback(); console.timeEnd('timeTaken'); return r; }; -// timeTaken(() => Math.pow(2, 10)) -> 1024 -// (logged): timeTaken: 0.02099609375ms +``` + +```js +timeTaken(() => Math.pow(2, 10)) -> 1024 +(logged): timeTaken: 0.02099609375ms ``` [⬆ back to top](#table-of-contents) @@ -2351,7 +2717,10 @@ Use `toLocaleString()` to convert a float-point arithmetic to the [Decimal mark] ```js const toDecimalMark = num => num.toLocaleString("en-US"); -// toDecimalMark(12305030388.9087) -> "12,305,030,388.9087" +``` + +```js +toDecimalMark(12305030388.9087) -> "12,305,030,388.9087" ``` [⬆ back to top](#table-of-contents) @@ -2371,7 +2740,10 @@ const toOrdinalSuffix = num => { tPattern = [11, 12, 13, 14, 15, 16, 17, 18, 19]; return oPattern.includes(digits[0]) && !tPattern.includes(digits[1]) ? int + ordinals[digits[0] - 1] : int + ordinals[3]; }; -// toOrdinalSuffix("123") -> "123rd" +``` + +```js +toOrdinalSuffix("123") -> "123rd" ``` [⬆ back to top](#table-of-contents) @@ -2387,7 +2759,10 @@ const UUIDGenerator = () => ([1e7] + -1e3 + -4e3 + -8e3 + -1e11).replace(/[018]/g, c => (c ^ crypto.getRandomValues(new Uint8Array(1))[0] & 15 >> c / 4).toString(16) ); -// UUIDGenerator() -> '7982fcfe-5721-4632-bede-6000885be57d' +``` + +```js +UUIDGenerator() -> '7982fcfe-5721-4632-bede-6000885be57d' ``` [⬆ back to top](#table-of-contents) @@ -2402,7 +2777,10 @@ Use `Number()` to check if the coercion holds. ```js const validateNumber = n => !isNaN(parseFloat(n)) && isFinite(n) && Number(n) == n; -// validateNumber('10') -> true +``` + +```js +validateNumber('10') -> true ``` [⬆ back to top](#table-of-contents) From f005bb55f8ac4330011ca98abe5de6b7e4abcba0 Mon Sep 17 00:00:00 2001 From: Angelos Chalaris Date: Wed, 27 Dec 2017 12:24:40 +0200 Subject: [PATCH 11/13] Updated query selector to match the proper pre elements --- static-parts/index-start.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/static-parts/index-start.html b/static-parts/index-start.html index 3a926ab47..191222d71 100644 --- a/static-parts/index-start.html +++ b/static-parts/index-start.html @@ -33,7 +33,7 @@ }) } function clipboard() { - const snippets = document.querySelectorAll("pre"); + const snippets = document.querySelectorAll(":not(pre) + pre"); snippets.forEach(element => { const button = document.createElement("button"); button.innerHTML = "Copy to clipboard"; From e436553169b25daa289d2b2f55fcb9ce6c48ae5f Mon Sep 17 00:00:00 2001 From: Angelos Chalaris Date: Wed, 27 Dec 2017 13:03:11 +0200 Subject: [PATCH 12/13] Updated the flavor file to avoid a styling problem --- docs/mini/flavor.scss | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/docs/mini/flavor.scss b/docs/mini/flavor.scss index 1ac2b1f8c..bed527130 100644 --- a/docs/mini/flavor.scss +++ b/docs/mini/flavor.scss @@ -114,7 +114,10 @@ code, pre, kbd, code *, pre *, kbd *, code[class*="language-"], pre[class*="lang font-family: 'Inconsolata', Menlo, Consolas, monospace !important; } code, kbd { font-size: 1em; } -code { transform: scale(1); } /* Deals with the issue described in #243 */ +code { + padding: 0; // Should make the first line's left padding the same as all other lines and avoid that annoying little step. + transform: scale(1); /* Deals with the issue described in #243 */ +} pre { font-size: 1rem; border: 0.0625rem solid var(--secondary-border-color); border-radius: var(--universal-border-radius);} .group{position:relative;margin-top:2em;margin-bottom:-1em} .search{font-size:14px;margin-top:-.1em;display:block;width:100%;border:none;border-bottom:1px solid var(--nav-link-color)} From 67cf77655cb6391883573eaa05122b044e6c44b4 Mon Sep 17 00:00:00 2001 From: Angelos Chalaris Date: Wed, 27 Dec 2017 16:06:16 +0200 Subject: [PATCH 13/13] Updated examples --- snippets/JSONToDate.md | 2 +- snippets/JSONToFile.md | 2 +- snippets/RGBToHex.md | 2 +- snippets/UUIDGenerator.md | 2 +- snippets/anagrams.md | 2 +- snippets/arrayAverage.md | 2 +- snippets/arrayGcd.md | 4 ++-- snippets/arrayLcm.md | 4 ++-- snippets/arrayMax.md | 2 +- snippets/arrayMin.md | 2 +- snippets/arraySum.md | 2 +- snippets/bottomVisible.md | 2 +- snippets/capitalize.md | 4 ++-- snippets/capitalizeEveryWord.md | 2 +- snippets/chunk.md | 2 +- snippets/clampNumber.md | 6 +++--- snippets/coalesce.md | 2 +- snippets/collatz.md | 4 ++-- snippets/compact.md | 2 +- snippets/compose.md | 2 +- snippets/countOccurrences.md | 2 +- snippets/countVowels.md | 4 ++-- snippets/currentURL.md | 2 +- snippets/curry.md | 4 ++-- snippets/deepFlatten.md | 2 +- snippets/detectDeviceType.md | 4 ++-- snippets/difference.md | 2 +- snippets/differenceWith.md | 2 +- snippets/digitize.md | 2 +- snippets/distance.md | 2 +- snippets/distinctValuesOfArray.md | 2 +- snippets/dropElements.md | 2 +- snippets/dropRight.md | 6 +++--- snippets/elementIsVisibleInViewport.md | 4 ++-- snippets/escapeRegExp.md | 2 +- snippets/everyNth.md | 2 +- snippets/extendHex.md | 4 ++-- snippets/factorial.md | 2 +- snippets/fibonacci.md | 2 +- snippets/fibonacciCountUntilNum.md | 2 +- snippets/fibonacciUntilNum.md | 2 +- snippets/filterNonUnique.md | 2 +- snippets/flatten.md | 2 +- snippets/flattenDepth.md | 2 +- snippets/fromCamelCase.md | 6 +++--- snippets/functionName.md | 2 +- snippets/gcd.md | 2 +- snippets/getDaysDiffBetweenDates.md | 2 +- snippets/getScrollPosition.md | 2 +- snippets/getType.md | 2 +- snippets/getURLParameters.md | 2 +- snippets/groupBy.md | 4 ++-- snippets/hammingDistance.md | 2 +- snippets/head.md | 2 +- snippets/hexToRGB.md | 6 +++--- snippets/inRange.md | 8 ++++---- snippets/initial.md | 2 +- snippets/initialize2DArray.md | 2 +- snippets/initializeArrayWithRange.md | 4 ++-- snippets/initializeArrayWithValues.md | 2 +- snippets/intersection.md | 2 +- snippets/isArmstrongNumber.md | 6 +++--- snippets/isArray.md | 4 ++-- snippets/isBoolean.md | 4 ++-- snippets/isDivisible.md | 2 +- snippets/isEven.md | 2 +- snippets/isFunction.md | 4 ++-- snippets/isNumber.md | 4 ++-- snippets/isPrime.md | 4 ++-- snippets/isString.md | 4 ++-- snippets/isSymbol.md | 4 ++-- snippets/last.md | 2 +- snippets/lcm.md | 2 +- snippets/median.md | 4 ++-- snippets/negate.md | 4 ++-- snippets/nthElement.md | 4 ++-- snippets/objectFromPairs.md | 2 +- snippets/objectToPairs.md | 2 +- snippets/orderBy.md | 4 ++-- snippets/palindrome.md | 2 +- snippets/percentile.md | 2 +- snippets/pick.md | 2 +- snippets/pipe.md | 2 +- snippets/powerset.md | 2 +- snippets/primes.md | 2 +- snippets/promisify.md | 2 +- snippets/pull.md | 4 ++-- snippets/pullAtIndex.md | 4 ++-- snippets/pullAtValue.md | 4 ++-- snippets/randomHexColorCode.md | 6 +++--- snippets/randomIntegerInRange.md | 2 +- snippets/randomNumberInRange.md | 2 +- snippets/readFileLines.md | 2 +- snippets/remove.md | 2 +- snippets/repeatString.md | 4 ++-- snippets/reverseString.md | 2 +- snippets/round.md | 2 +- snippets/runPromisesInSeries.md | 2 +- snippets/sample.md | 2 +- snippets/select.md | 2 +- snippets/shallowClone.md | 2 +- snippets/shuffle.md | 2 +- snippets/similarity.md | 2 +- snippets/sortCharactersInString.md | 2 +- snippets/speechSynthesis.md | 2 +- snippets/spreadOver.md | 4 ++-- snippets/standardDeviation.md | 4 ++-- snippets/symmetricDifference.md | 2 +- snippets/tail.md | 4 ++-- snippets/take.md | 4 ++-- snippets/takeRight.md | 4 ++-- snippets/timeTaken.md | 2 +- snippets/toCamelCase.md | 8 ++++---- snippets/toDecimalMark.md | 2 +- snippets/toEnglishDate.md | 2 +- snippets/toKebabCase.md | 10 +++++----- snippets/toOrdinalSuffix.md | 2 +- snippets/toSnakeCase.md | 12 ++++++------ snippets/truncateString.md | 2 +- snippets/truthCheckCollection.md | 2 +- snippets/union.md | 2 +- snippets/validateNumber.md | 2 +- snippets/without.md | 2 +- snippets/words.md | 4 ++-- snippets/zip.md | 4 ++-- snippets/zipObject.md | 4 ++-- 126 files changed, 187 insertions(+), 187 deletions(-) diff --git a/snippets/JSONToDate.md b/snippets/JSONToDate.md index 38e9219f9..f2cbb095b 100644 --- a/snippets/JSONToDate.md +++ b/snippets/JSONToDate.md @@ -12,5 +12,5 @@ const JSONToDate = arr => { ``` ```js -JSONToDate(/Date(1489525200000)/) -> "14/3/2017" +JSONToDate(/Date(1489525200000)/) // "14/3/2017" ``` diff --git a/snippets/JSONToFile.md b/snippets/JSONToFile.md index 300b47e1f..2e88f336d 100644 --- a/snippets/JSONToFile.md +++ b/snippets/JSONToFile.md @@ -10,5 +10,5 @@ const JSONToFile = (obj, filename) => fs.writeFile(`${filename}.json`, JSON.stri ``` ```js -JSONToFile({test: "is passed"}, 'testJsonFile') -> writes the object to 'testJsonFile.json' +JSONToFile({test: "is passed"}, 'testJsonFile') // writes the object to 'testJsonFile.json' ``` diff --git a/snippets/RGBToHex.md b/snippets/RGBToHex.md index f7568f70f..a7f045ab7 100644 --- a/snippets/RGBToHex.md +++ b/snippets/RGBToHex.md @@ -9,5 +9,5 @@ const RGBToHex = (r, g, b) => ((r << 16) + (g << 8) + b).toString(16).padStart(6 ``` ```js -RGBToHex(255, 165, 1) -> 'ffa501' +RGBToHex(255, 165, 1) // 'ffa501' ``` diff --git a/snippets/UUIDGenerator.md b/snippets/UUIDGenerator.md index 87300e5ed..2fc772940 100644 --- a/snippets/UUIDGenerator.md +++ b/snippets/UUIDGenerator.md @@ -12,5 +12,5 @@ const UUIDGenerator = () => ``` ```js -UUIDGenerator() -> '7982fcfe-5721-4632-bede-6000885be57d' +UUIDGenerator() // '7982fcfe-5721-4632-bede-6000885be57d' ``` diff --git a/snippets/anagrams.md b/snippets/anagrams.md index 2238c4a5f..82684871c 100644 --- a/snippets/anagrams.md +++ b/snippets/anagrams.md @@ -16,5 +16,5 @@ const anagrams = str => { ``` ```js -anagrams('abc') -> ['abc','acb','bac','bca','cab','cba'] +anagrams('abc') // ['abc','acb','bac','bca','cab','cba'] ``` diff --git a/snippets/arrayAverage.md b/snippets/arrayAverage.md index 92c54518b..1cc3cecb4 100644 --- a/snippets/arrayAverage.md +++ b/snippets/arrayAverage.md @@ -9,5 +9,5 @@ const arrayAverage = arr => arr.reduce((acc, val) => acc + val, 0) / arr.length; ``` ```js -arrayAverage([1,2,3]) -> 2 +arrayAverage([1,2,3]) // 2 ``` diff --git a/snippets/arrayGcd.md b/snippets/arrayGcd.md index df657f31a..975b7ecc4 100644 --- a/snippets/arrayGcd.md +++ b/snippets/arrayGcd.md @@ -12,6 +12,6 @@ const arrayGcd = arr =>{ ``` ```js -arrayGcd([1,2,3,4,5]) -> 1 -arrayGcd([4,8,12]) -> 4 +arrayGcd([1,2,3,4,5]) // 1 +arrayGcd([4,8,12]) // 4 ``` diff --git a/snippets/arrayLcm.md b/snippets/arrayLcm.md index fd82831f5..e50555e2e 100644 --- a/snippets/arrayLcm.md +++ b/snippets/arrayLcm.md @@ -13,6 +13,6 @@ const arrayLcm = arr =>{ ``` ```js -arrayLcm([1,2,3,4,5]) -> 60 -arrayLcm([4,8,12]) -> 24 +arrayLcm([1,2,3,4,5]) // 60 +arrayLcm([4,8,12]) // 24 ``` diff --git a/snippets/arrayMax.md b/snippets/arrayMax.md index 3e1b5c5e8..32178d533 100644 --- a/snippets/arrayMax.md +++ b/snippets/arrayMax.md @@ -9,5 +9,5 @@ const arrayMax = arr => Math.max(...arr); ``` ```js -arrayMax([10, 1, 5]) -> 10 +arrayMax([10, 1, 5]) // 10 ``` diff --git a/snippets/arrayMin.md b/snippets/arrayMin.md index 171d60977..1e256b388 100644 --- a/snippets/arrayMin.md +++ b/snippets/arrayMin.md @@ -9,5 +9,5 @@ const arrayMin = arr => Math.min(...arr); ``` ```js -arrayMin([10, 1, 5]) -> 1 +arrayMin([10, 1, 5]) // 1 ``` diff --git a/snippets/arraySum.md b/snippets/arraySum.md index 9c3178d35..536a4eb81 100644 --- a/snippets/arraySum.md +++ b/snippets/arraySum.md @@ -9,5 +9,5 @@ const arraySum = arr => arr.reduce((acc, val) => acc + val, 0); ``` ```js -arraySum([1,2,3,4]) -> 10 +arraySum([1,2,3,4]) // 10 ``` diff --git a/snippets/bottomVisible.md b/snippets/bottomVisible.md index 485f1879f..844d11b31 100644 --- a/snippets/bottomVisible.md +++ b/snippets/bottomVisible.md @@ -10,5 +10,5 @@ const bottomVisible = () => ``` ```js -// bottomVisible() -> true +// bottomVisible() // true ``` diff --git a/snippets/capitalize.md b/snippets/capitalize.md index 435b69202..2b8a6e216 100644 --- a/snippets/capitalize.md +++ b/snippets/capitalize.md @@ -11,6 +11,6 @@ const capitalize = ([first,...rest], lowerRest = false) => ``` ```js -capitalize('fooBar') -> 'FooBar' -capitalize('fooBar', true) -> 'Foobar' +capitalize('fooBar') // 'FooBar' +capitalize('fooBar', true) // 'Foobar' ``` diff --git a/snippets/capitalizeEveryWord.md b/snippets/capitalizeEveryWord.md index b607f8f58..dd3193c3e 100644 --- a/snippets/capitalizeEveryWord.md +++ b/snippets/capitalizeEveryWord.md @@ -9,5 +9,5 @@ const capitalizeEveryWord = str => str.replace(/\b[a-z]/g, char => char.toUpperC ``` ```js -capitalizeEveryWord('hello world!') -> 'Hello World!' +capitalizeEveryWord('hello world!') // 'Hello World!' ``` diff --git a/snippets/chunk.md b/snippets/chunk.md index 122712351..f27fe965c 100644 --- a/snippets/chunk.md +++ b/snippets/chunk.md @@ -12,5 +12,5 @@ const chunk = (arr, size) => ``` ```js -chunk([1,2,3,4,5], 2) -> [[1,2],[3,4],[5]] +chunk([1,2,3,4,5], 2) // [[1,2],[3,4],[5]] ``` diff --git a/snippets/clampNumber.md b/snippets/clampNumber.md index 907b54729..3ae9eda45 100644 --- a/snippets/clampNumber.md +++ b/snippets/clampNumber.md @@ -14,7 +14,7 @@ const clampNumber = (num, lower, upper) => { ``` ```js -clampNumber(2, 3, 5) -> 3 -clampNumber(1, -1, -5) -> -1 -clampNumber(3, 2, 4) -> 3 +clampNumber(2, 3, 5) // 3 +clampNumber(1, -1, -5) // -1 +clampNumber(3, 2, 4) // 3 ``` diff --git a/snippets/coalesce.md b/snippets/coalesce.md index 9762a363f..c112c77d4 100644 --- a/snippets/coalesce.md +++ b/snippets/coalesce.md @@ -9,5 +9,5 @@ const coalesce = (...args) => args.find(_ => ![undefined, null].includes(_)) ``` ```js -coalesce(null,undefined,"",NaN, "Waldo") -> "" +coalesce(null,undefined,"",NaN, "Waldo") // "" ``` diff --git a/snippets/collatz.md b/snippets/collatz.md index fc05b2a5d..de67f674c 100644 --- a/snippets/collatz.md +++ b/snippets/collatz.md @@ -9,6 +9,6 @@ const collatz = n => (n % 2 == 0) ? (n / 2) : (3 * n + 1); ``` ```js -collatz(8) -> 4 -collatz(5) -> 16 +collatz(8) // 4 +collatz(5) // 16 ``` diff --git a/snippets/compact.md b/snippets/compact.md index 2a9528772..07f4e9900 100644 --- a/snippets/compact.md +++ b/snippets/compact.md @@ -9,5 +9,5 @@ const compact = arr => arr.filter(Boolean); ``` ```js -compact([0, 1, false, 2, '', 3, 'a', 'e'*23, NaN, 's', 34]) -> [ 1, 2, 3, 'a', 's', 34 ] +compact([0, 1, false, 2, '', 3, 'a', 'e'*23, NaN, 's', 34]) // [ 1, 2, 3, 'a', 's', 34 ] ``` diff --git a/snippets/compose.md b/snippets/compose.md index dfd40f814..c271a50e8 100644 --- a/snippets/compose.md +++ b/snippets/compose.md @@ -13,5 +13,5 @@ const compose = (...fns) => fns.reduce((f, g) => (...args) => f(g(...args))); const add5 = x => x + 5 const multiply = (x, y) => x * y const multiplyAndAdd5 = compose(add5, multiply) -multiplyAndAdd5(5, 2) -> 15 +multiplyAndAdd5(5, 2) // 15 ``` diff --git a/snippets/countOccurrences.md b/snippets/countOccurrences.md index 2c1463b02..d68c83acf 100644 --- a/snippets/countOccurrences.md +++ b/snippets/countOccurrences.md @@ -9,5 +9,5 @@ const countOccurrences = (arr, value) => arr.reduce((a, v) => v === value ? a + ``` ```js -countOccurrences([1,1,2,1,2,3], 1) -> 3 +countOccurrences([1,1,2,1,2,3], 1) // 3 ``` diff --git a/snippets/countVowels.md b/snippets/countVowels.md index 47c683eb8..50cf6cafa 100644 --- a/snippets/countVowels.md +++ b/snippets/countVowels.md @@ -9,6 +9,6 @@ const countVowels = str => (str.match(/[aeiou]/ig) || []).length; ``` ```js -countVowels('foobar') -> 3 -countVowels('gym') -> 0 +countVowels('foobar') // 3 +countVowels('gym') // 0 ``` diff --git a/snippets/currentURL.md b/snippets/currentURL.md index 7e8965d92..0fab76ab3 100644 --- a/snippets/currentURL.md +++ b/snippets/currentURL.md @@ -9,5 +9,5 @@ const currentURL = () => window.location.href; ``` ```js -currentUrl() -> 'https://google.com' +currentUrl() // 'https://google.com' ``` diff --git a/snippets/curry.md b/snippets/curry.md index f1806d395..c316acff2 100644 --- a/snippets/curry.md +++ b/snippets/curry.md @@ -15,6 +15,6 @@ const curry = (fn, arity = fn.length, ...args) => ``` ```js -curry(Math.pow)(2)(10) -> 1024 -curry(Math.min, 3)(10)(50)(2) -> 2 +curry(Math.pow)(2)(10) // 1024 +curry(Math.min, 3)(10)(50)(2) // 2 ``` diff --git a/snippets/deepFlatten.md b/snippets/deepFlatten.md index cea888992..c6c9d2807 100644 --- a/snippets/deepFlatten.md +++ b/snippets/deepFlatten.md @@ -11,5 +11,5 @@ const deepFlatten = arr => [].concat(...arr.map(v => Array.isArray(v) ? deepFlat ``` ```js -deepFlatten([1,[2],[[3],4],5]) -> [1,2,3,4,5] +deepFlatten([1,[2],[[3],4],5]) // [1,2,3,4,5] ``` diff --git a/snippets/detectDeviceType.md b/snippets/detectDeviceType.md index 64888d44e..b262e194d 100644 --- a/snippets/detectDeviceType.md +++ b/snippets/detectDeviceType.md @@ -9,6 +9,6 @@ const detectDeviceType = () => /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobi ``` ```js -detectDeviceType() -> "Mobile" -detectDeviceType() -> "Desktop" +detectDeviceType() // "Mobile" +detectDeviceType() // "Desktop" ``` diff --git a/snippets/difference.md b/snippets/difference.md index dce891e60..486d4b050 100644 --- a/snippets/difference.md +++ b/snippets/difference.md @@ -9,5 +9,5 @@ const difference = (a, b) => { const s = new Set(b); return a.filter(x => !s.has ``` ```js -difference([1,2,3], [1,2,4]) -> [3] +difference([1,2,3], [1,2,4]) // [3] ``` diff --git a/snippets/differenceWith.md b/snippets/differenceWith.md index c199a62bd..f5ad345d6 100644 --- a/snippets/differenceWith.md +++ b/snippets/differenceWith.md @@ -9,5 +9,5 @@ const differenceWith = (arr, val, comp) => arr.filter(a => !val.find(b => comp(a ``` ```js -differenceWith([1, 1.2, 1.5, 3], [1.9, 3], (a,b) => Math.round(a) == Math.round(b)) -> [1, 1.2] +differenceWith([1, 1.2, 1.5, 3], [1.9, 3], (a,b) => Math.round(a) == Math.round(b)) // [1, 1.2] ``` diff --git a/snippets/digitize.md b/snippets/digitize.md index b9d6cffbd..9d52fd04b 100644 --- a/snippets/digitize.md +++ b/snippets/digitize.md @@ -10,5 +10,5 @@ const digitize = n => [...''+n].map(i => parseInt(i)); ``` ```js -differenceWith([1, 1.2, 1.5, 3], [1.9, 3], (a,b) => Math.round(a) == Math.round(b)) -> [1, 1.2] +differenceWith([1, 1.2, 1.5, 3], [1.9, 3], (a,b) => Math.round(a) == Math.round(b)) // [1, 1.2] ``` diff --git a/snippets/distance.md b/snippets/distance.md index 543c763a6..bfc29b8dc 100644 --- a/snippets/distance.md +++ b/snippets/distance.md @@ -9,5 +9,5 @@ const distance = (x0, y0, x1, y1) => Math.hypot(x1 - x0, y1 - y0); ``` ```js -distance(1,1, 2,3) -> 2.23606797749979 +distance(1,1, 2,3) // 2.23606797749979 ``` diff --git a/snippets/distinctValuesOfArray.md b/snippets/distinctValuesOfArray.md index 374e24cef..509738a40 100644 --- a/snippets/distinctValuesOfArray.md +++ b/snippets/distinctValuesOfArray.md @@ -9,5 +9,5 @@ const distinctValuesOfArray = arr => [...new Set(arr)]; ``` ```js -distinctValuesOfArray([1,2,2,3,4,4,5]) -> [1,2,3,4,5] +distinctValuesOfArray([1,2,2,3,4,4,5]) // [1,2,3,4,5] ``` diff --git a/snippets/dropElements.md b/snippets/dropElements.md index 064a16d22..a9632c634 100644 --- a/snippets/dropElements.md +++ b/snippets/dropElements.md @@ -13,5 +13,5 @@ const dropElements = (arr, func) => { ``` ```js -dropElements([1, 2, 3, 4], n => n >= 3) -> [3,4] +dropElements([1, 2, 3, 4], n => n >= 3) // [3,4] ``` diff --git a/snippets/dropRight.md b/snippets/dropRight.md index 11d30d198..cdf8fd458 100644 --- a/snippets/dropRight.md +++ b/snippets/dropRight.md @@ -9,7 +9,7 @@ const dropRight = (arr, n = 1) => arr.slice(0, -n); ``` ```js -dropRight([1,2,3]) -> [1,2] -dropRight([1,2,3], 2) -> [1] -dropRight([1,2,3], 42) -> [] +dropRight([1,2,3]) // [1,2] +dropRight([1,2,3], 2) // [1] +dropRight([1,2,3], 42) // [] ``` diff --git a/snippets/elementIsVisibleInViewport.md b/snippets/elementIsVisibleInViewport.md index 83e6afe71..ed2933efe 100644 --- a/snippets/elementIsVisibleInViewport.md +++ b/snippets/elementIsVisibleInViewport.md @@ -20,6 +20,6 @@ const elementIsVisibleInViewport = (el, partiallyVisible = false) => { ```js // e.g. 100x100 viewport and a 10x10px element at position {top: -1, left: 0, bottom: 9, right: 10} -elementIsVisibleInViewport(el) -> false // (not fully visible) -elementIsVisibleInViewport(el, true) -> true // (partially visible) +elementIsVisibleInViewport(el) // false // (not fully visible) +elementIsVisibleInViewport(el, true) // true // (partially visible) ``` diff --git a/snippets/escapeRegExp.md b/snippets/escapeRegExp.md index 7fdbff462..f82850d2b 100644 --- a/snippets/escapeRegExp.md +++ b/snippets/escapeRegExp.md @@ -9,5 +9,5 @@ const escapeRegExp = str => str.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); ``` ```js -escapeRegExp('(test)') -> \\(test\\) +escapeRegExp('(test)') // \\(test\\) ``` diff --git a/snippets/everyNth.md b/snippets/everyNth.md index 6aa78ac69..2fab65d47 100644 --- a/snippets/everyNth.md +++ b/snippets/everyNth.md @@ -9,5 +9,5 @@ const everyNth = (arr, nth) => arr.filter((e, i) => i % nth === nth - 1); ``` ```js -everyNth([1,2,3,4,5,6], 2) -> [ 2, 4, 6 ] +everyNth([1,2,3,4,5,6], 2) // [ 2, 4, 6 ] ``` diff --git a/snippets/extendHex.md b/snippets/extendHex.md index 9338fb139..40253a7f1 100644 --- a/snippets/extendHex.md +++ b/snippets/extendHex.md @@ -10,6 +10,6 @@ const extendHex = shortHex => ``` ```js -extendHex('#03f') -> '#0033ff' -extendHex('05a') -> '#0055aa' +extendHex('#03f') // '#0033ff' +extendHex('05a') // '#0055aa' ``` diff --git a/snippets/factorial.md b/snippets/factorial.md index f4f4ad941..f1fa9bd29 100644 --- a/snippets/factorial.md +++ b/snippets/factorial.md @@ -14,5 +14,5 @@ const factorial = n => ``` ```js -factorial(6) -> 720 +factorial(6) // 720 ``` diff --git a/snippets/fibonacci.md b/snippets/fibonacci.md index 9addac34a..474bba30d 100644 --- a/snippets/fibonacci.md +++ b/snippets/fibonacci.md @@ -11,5 +11,5 @@ const fibonacci = n => ``` ```js -factorial(6) -> 720 +factorial(6) // 720 ``` diff --git a/snippets/fibonacciCountUntilNum.md b/snippets/fibonacciCountUntilNum.md index 82f53ea98..719e8cef3 100644 --- a/snippets/fibonacciCountUntilNum.md +++ b/snippets/fibonacciCountUntilNum.md @@ -10,5 +10,5 @@ const fibonacciCountUntilNum = num => ``` ```js -fibonacciCountUntilNum(10) -> 7 +fibonacciCountUntilNum(10) // 7 ``` diff --git a/snippets/fibonacciUntilNum.md b/snippets/fibonacciUntilNum.md index c7ad1cd6e..bae5456b9 100644 --- a/snippets/fibonacciUntilNum.md +++ b/snippets/fibonacciUntilNum.md @@ -14,5 +14,5 @@ const fibonacciUntilNum = num => { ``` ```js -fibonacciCountUntilNum(10) -> 7 +fibonacciCountUntilNum(10) // 7 ``` diff --git a/snippets/filterNonUnique.md b/snippets/filterNonUnique.md index 1568afbf8..cfce97f56 100644 --- a/snippets/filterNonUnique.md +++ b/snippets/filterNonUnique.md @@ -9,5 +9,5 @@ const filterNonUnique = arr => arr.filter(i => arr.indexOf(i) === arr.lastIndexO ``` ```js -filterNonUnique([1,2,2,3,4,4,5]) -> [1,3,5] +filterNonUnique([1,2,2,3,4,4,5]) // [1,3,5] ``` diff --git a/snippets/flatten.md b/snippets/flatten.md index 66b5b86ad..29cb52ad1 100644 --- a/snippets/flatten.md +++ b/snippets/flatten.md @@ -9,5 +9,5 @@ const flatten = arr => [ ].concat( ...arr ); ``` ```js -flatten([1,[2],3,4]) -> [1,2,3,4] +flatten([1,[2],3,4]) // [1,2,3,4] ``` diff --git a/snippets/flattenDepth.md b/snippets/flattenDepth.md index 6034b9135..a08563ca5 100644 --- a/snippets/flattenDepth.md +++ b/snippets/flattenDepth.md @@ -14,5 +14,5 @@ const flattenDepth = (arr, depth = 1) => ``` ```js -flatten([1,[2],3,4]) -> [1,2,3,4] +flatten([1,[2],3,4]) // [1,2,3,4] ``` diff --git a/snippets/fromCamelCase.md b/snippets/fromCamelCase.md index 14c21bc4c..9a74226f7 100644 --- a/snippets/fromCamelCase.md +++ b/snippets/fromCamelCase.md @@ -12,7 +12,7 @@ const fromCamelCase = (str, separator = '_') => ``` ```js -fromCamelCase('someDatabaseFieldName', ' ') -> 'some database field name' -fromCamelCase('someLabelThatNeedsToBeCamelized', '-') -> 'some-label-that-needs-to-be-camelized' -fromCamelCase('someJavascriptProperty', '_') -> 'some_javascript_property' +fromCamelCase('someDatabaseFieldName', ' ') // 'some database field name' +fromCamelCase('someLabelThatNeedsToBeCamelized', '-') // 'some-label-that-needs-to-be-camelized' +fromCamelCase('someJavascriptProperty', '_') // 'some_javascript_property' ``` diff --git a/snippets/functionName.md b/snippets/functionName.md index 1ad25772a..17869a6a6 100644 --- a/snippets/functionName.md +++ b/snippets/functionName.md @@ -9,5 +9,5 @@ const functionName = fn => (console.debug(fn.name), fn); ``` ```js -functionName(Math.max) -> max (logged in debug channel of console) +functionName(Math.max) // max (logged in debug channel of console) ``` diff --git a/snippets/gcd.md b/snippets/gcd.md index 8affada12..f3faa5057 100644 --- a/snippets/gcd.md +++ b/snippets/gcd.md @@ -11,5 +11,5 @@ const gcd = (x, y) => !y ? x : gcd(y, x % y); ``` ```js -gcd (8, 36) -> 4 +gcd (8, 36) // 4 ``` diff --git a/snippets/getDaysDiffBetweenDates.md b/snippets/getDaysDiffBetweenDates.md index 6c73366ac..f0f4d5763 100644 --- a/snippets/getDaysDiffBetweenDates.md +++ b/snippets/getDaysDiffBetweenDates.md @@ -9,5 +9,5 @@ const getDaysDiffBetweenDates = (dateInitial, dateFinal) => (dateFinal - dateIni ``` ```js -getDaysDiffBetweenDates(new Date("2017-12-13"), new Date("2017-12-22")) -> 9 +getDaysDiffBetweenDates(new Date("2017-12-13"), new Date("2017-12-22")) // 9 ``` diff --git a/snippets/getScrollPosition.md b/snippets/getScrollPosition.md index 2708210a1..4860b0293 100644 --- a/snippets/getScrollPosition.md +++ b/snippets/getScrollPosition.md @@ -12,5 +12,5 @@ const getScrollPosition = (el = window) => ``` ```js -getScrollPosition() -> {x: 0, y: 200} +getScrollPosition() // {x: 0, y: 200} ``` diff --git a/snippets/getType.md b/snippets/getType.md index f0b9be8d5..655f62adb 100644 --- a/snippets/getType.md +++ b/snippets/getType.md @@ -10,5 +10,5 @@ const getType = v => ``` ```js -getType(new Set([1,2,3])) -> "set" +getType(new Set([1,2,3])) // "set" ``` diff --git a/snippets/getURLParameters.md b/snippets/getURLParameters.md index 5f4690bfc..b1e138450 100644 --- a/snippets/getURLParameters.md +++ b/snippets/getURLParameters.md @@ -13,5 +13,5 @@ const getURLParameters = url => ``` ```js -getURLParameters('http://url.com/page?name=Adam&surname=Smith') -> {name: 'Adam', surname: 'Smith'} +getURLParameters('http://url.com/page?name=Adam&surname=Smith') // {name: 'Adam', surname: 'Smith'} ``` diff --git a/snippets/groupBy.md b/snippets/groupBy.md index 4b301e2b8..bebea215c 100644 --- a/snippets/groupBy.md +++ b/snippets/groupBy.md @@ -12,6 +12,6 @@ const groupBy = (arr, func) => ``` ```js -groupBy([6.1, 4.2, 6.3], Math.floor) -> {4: [4.2], 6: [6.1, 6.3]} -groupBy(['one', 'two', 'three'], 'length') -> {3: ['one', 'two'], 5: ['three']} +groupBy([6.1, 4.2, 6.3], Math.floor) // {4: [4.2], 6: [6.1, 6.3]} +groupBy(['one', 'two', 'three'], 'length') // {3: ['one', 'two'], 5: ['three']} ``` diff --git a/snippets/hammingDistance.md b/snippets/hammingDistance.md index e0f22dba7..aedc72ce8 100644 --- a/snippets/hammingDistance.md +++ b/snippets/hammingDistance.md @@ -11,5 +11,5 @@ const hammingDistance = (num1, num2) => ``` ```js -hammingDistance(2,3) -> 1 +hammingDistance(2,3) // 1 ``` diff --git a/snippets/head.md b/snippets/head.md index 30b8951a6..b48d9bb1d 100644 --- a/snippets/head.md +++ b/snippets/head.md @@ -9,5 +9,5 @@ const head = arr => arr[0]; ``` ```js -head([1,2,3]) -> 1 +head([1,2,3]) // 1 ``` diff --git a/snippets/hexToRGB.md b/snippets/hexToRGB.md index d3fab8a8d..c24323286 100644 --- a/snippets/hexToRGB.md +++ b/snippets/hexToRGB.md @@ -19,7 +19,7 @@ const hexToRGB = hex => { ``` ```js -hexToRGB('#27ae60ff') -> 'rgba(39, 174, 96, 255)' -hexToRGB('27ae60') -> 'rgb(39, 174, 96)' -hexToRGB('#fff') -> 'rgb(255, 255, 255)' +hexToRGB('#27ae60ff') // 'rgba(39, 174, 96, 255)' +hexToRGB('27ae60') // 'rgb(39, 174, 96)' +hexToRGB('#fff') // 'rgb(255, 255, 255)' ``` diff --git a/snippets/inRange.md b/snippets/inRange.md index f4caf811c..044b32a0c 100644 --- a/snippets/inRange.md +++ b/snippets/inRange.md @@ -13,8 +13,8 @@ const inRange = (n, start, end=null) => { ``` ```js -inRange(3, 2, 5) -> true -inRange(3, 4) -> true -inRange(2, 3, 5) -> false -inrange(3, 2) -> false +inRange(3, 2, 5) // true +inRange(3, 4) // true +inRange(2, 3, 5) // false +inrange(3, 2) // false ``` diff --git a/snippets/initial.md b/snippets/initial.md index 87827c437..be178bcc8 100644 --- a/snippets/initial.md +++ b/snippets/initial.md @@ -9,5 +9,5 @@ const initial = arr => arr.slice(0, -1); ``` ```js -initial([1,2,3]) -> [1,2] +initial([1,2,3]) // [1,2] ``` diff --git a/snippets/initialize2DArray.md b/snippets/initialize2DArray.md index add743115..bde4ba879 100644 --- a/snippets/initialize2DArray.md +++ b/snippets/initialize2DArray.md @@ -9,5 +9,5 @@ const initialize2DArray = (w, h, val = null) => Array(h).fill().map(() => Array( ``` ```js -initialize2DArray(2, 2, 0) -> [[0,0], [0,0]] +initialize2DArray(2, 2, 0) // [[0,0], [0,0]] ``` diff --git a/snippets/initializeArrayWithRange.md b/snippets/initializeArrayWithRange.md index 8ea87a9c4..9c3b0c8f4 100644 --- a/snippets/initializeArrayWithRange.md +++ b/snippets/initializeArrayWithRange.md @@ -11,6 +11,6 @@ const initializeArrayWithRange = (end, start = 0) => ``` ```js -initializeArrayWithRange(5) -> [0,1,2,3,4,5] -initializeArrayWithRange(7, 3) -> [3,4,5,6,7] +initializeArrayWithRange(5) // [0,1,2,3,4,5] +initializeArrayWithRange(7, 3) // [3,4,5,6,7] ``` diff --git a/snippets/initializeArrayWithValues.md b/snippets/initializeArrayWithValues.md index a92a09e7a..a8ac57bc5 100644 --- a/snippets/initializeArrayWithValues.md +++ b/snippets/initializeArrayWithValues.md @@ -10,5 +10,5 @@ const initializeArrayWithValues = (n, value = 0) => Array(n).fill(value); ``` ```js -initializeArrayWithValues(5, 2) -> [2,2,2,2,2] +initializeArrayWithValues(5, 2) // [2,2,2,2,2] ``` diff --git a/snippets/intersection.md b/snippets/intersection.md index 0596a04ce..960433b6e 100644 --- a/snippets/intersection.md +++ b/snippets/intersection.md @@ -9,5 +9,5 @@ const intersection = (a, b) => { const s = new Set(b); return a.filter(x => s.ha ``` ```js -intersection([1,2,3], [4,3,2]) -> [2,3] +intersection([1,2,3], [4,3,2]) // [2,3] ``` diff --git a/snippets/isArmstrongNumber.md b/snippets/isArmstrongNumber.md index 65972fc88..81f59409e 100644 --- a/snippets/isArmstrongNumber.md +++ b/snippets/isArmstrongNumber.md @@ -10,7 +10,7 @@ const isArmstrongNumber = digits => ``` ```js -isArmstrongNumber(1634) -> true -isArmstrongNumber(371) -> true -isArmstrongNumber(56) -> false +isArmstrongNumber(1634) // true +isArmstrongNumber(371) // true +isArmstrongNumber(56) // false ``` diff --git a/snippets/isArray.md b/snippets/isArray.md index 28b80c262..3fa987f4f 100644 --- a/snippets/isArray.md +++ b/snippets/isArray.md @@ -9,6 +9,6 @@ const isArray = val => !!val && Array.isArray(val); ``` ```js -isArray(null) -> false -isArray([1]) -> true +isArray(null) // false +isArray([1]) // true ``` diff --git a/snippets/isBoolean.md b/snippets/isBoolean.md index ad47fa33e..3e7022df9 100644 --- a/snippets/isBoolean.md +++ b/snippets/isBoolean.md @@ -9,6 +9,6 @@ const isBoolean = val => typeof val === 'boolean'; ``` ```js -isBoolean(null) -> false -isBoolean(false) -> true +isBoolean(null) // false +isBoolean(false) // true ``` diff --git a/snippets/isDivisible.md b/snippets/isDivisible.md index 95919d69d..b7a5614f0 100644 --- a/snippets/isDivisible.md +++ b/snippets/isDivisible.md @@ -9,5 +9,5 @@ const isDivisible = (dividend, divisor) => dividend % divisor === 0; ``` ```js -isDivisible(6,3) -> true +isDivisible(6,3) // true ``` diff --git a/snippets/isEven.md b/snippets/isEven.md index b2bb58b58..2e3312309 100644 --- a/snippets/isEven.md +++ b/snippets/isEven.md @@ -10,5 +10,5 @@ const isEven = num => num % 2 === 0; ``` ```js -isEven(3) -> false +isEven(3) // false ``` diff --git a/snippets/isFunction.md b/snippets/isFunction.md index eae2073e4..d1c0a722d 100644 --- a/snippets/isFunction.md +++ b/snippets/isFunction.md @@ -9,6 +9,6 @@ const isFunction = val => val && typeof val === 'function'; ``` ```js -isFunction('x') -> false -isFunction(x => x) -> true +isFunction('x') // false +isFunction(x => x) // true ``` diff --git a/snippets/isNumber.md b/snippets/isNumber.md index 3035a0a3a..f14a608e5 100644 --- a/snippets/isNumber.md +++ b/snippets/isNumber.md @@ -9,6 +9,6 @@ const isNumber = val => typeof val === 'number'; ``` ```js -isNumber('1') -> false -isNumber(1) -> true +isNumber('1') // false +isNumber(1) // true ``` \ No newline at end of file diff --git a/snippets/isPrime.md b/snippets/isPrime.md index 2e609028b..b0d23c80e 100644 --- a/snippets/isPrime.md +++ b/snippets/isPrime.md @@ -14,6 +14,6 @@ const isPrime = num => { ``` ```js -isPrime(11) -> true -isPrime(12) -> false +isPrime(11) // true +isPrime(12) // false ``` diff --git a/snippets/isString.md b/snippets/isString.md index 923bcd174..1e0dbcef6 100644 --- a/snippets/isString.md +++ b/snippets/isString.md @@ -9,6 +9,6 @@ const isString = val => typeof val === 'string'; ``` ```js -isString(10) -> false -isString('10') -> true +isString(10) // false +isString('10') // true ``` diff --git a/snippets/isSymbol.md b/snippets/isSymbol.md index 0baa68500..a0ae667eb 100644 --- a/snippets/isSymbol.md +++ b/snippets/isSymbol.md @@ -9,6 +9,6 @@ const isSymbol = val => typeof val === 'symbol'; ``` ```js -isSymbol('x') -> false -isSymbol(Symbol('x')) -> true +isSymbol('x') // false +isSymbol(Symbol('x')) // true ``` diff --git a/snippets/last.md b/snippets/last.md index f26427591..3dd1cf680 100644 --- a/snippets/last.md +++ b/snippets/last.md @@ -9,5 +9,5 @@ const last = arr => arr[arr.length - 1]; ``` ```js -last([1,2,3]) -> 3 +last([1,2,3]) // 3 ``` diff --git a/snippets/lcm.md b/snippets/lcm.md index cc9b32367..ec98e26b7 100644 --- a/snippets/lcm.md +++ b/snippets/lcm.md @@ -13,5 +13,5 @@ const lcm = (x,y) => { ``` ```js -lcm(12,7) -> 84 +lcm(12,7) // 84 ``` diff --git a/snippets/median.md b/snippets/median.md index e472e7c0d..77ec63fdf 100644 --- a/snippets/median.md +++ b/snippets/median.md @@ -13,6 +13,6 @@ const median = arr => { ``` ```js -median([5,6,50,1,-5]) -> 5 -median([0,10,-2,7]) -> 3.5 +median([5,6,50,1,-5]) // 5 +median([0,10,-2,7]) // 3.5 ``` diff --git a/snippets/negate.md b/snippets/negate.md index 739ad97c1..fd8856b2f 100644 --- a/snippets/negate.md +++ b/snippets/negate.md @@ -9,6 +9,6 @@ const negate = func => (...args) => !func(...args); ``` ```js -filter([1, 2, 3, 4, 5, 6], negate(isEven)) -> [1, 3, 5] -negate(isOdd)(1) -> false +filter([1, 2, 3, 4, 5, 6], negate(isEven)) // [1, 3, 5] +negate(isOdd)(1) // false ``` diff --git a/snippets/nthElement.md b/snippets/nthElement.md index ba2d1933e..9c1fbf387 100644 --- a/snippets/nthElement.md +++ b/snippets/nthElement.md @@ -11,6 +11,6 @@ const nthElement = (arr, n=0) => (n>0? arr.slice(n,n+1) : arr.slice(n))[0]; ``` ```js -nthElement(['a','b','c'],1) -> 'b' -nthElement(['a','b','b'],-3) -> 'a' +nthElement(['a','b','c'],1) // 'b' +nthElement(['a','b','b'],-3) // 'a' ``` diff --git a/snippets/objectFromPairs.md b/snippets/objectFromPairs.md index 2ed208f44..5066ff528 100644 --- a/snippets/objectFromPairs.md +++ b/snippets/objectFromPairs.md @@ -9,5 +9,5 @@ const objectFromPairs = arr => arr.reduce((a, v) => (a[v[0]] = v[1], a), {}); ``` ```js -objectFromPairs([['a',1],['b',2]]) -> {a: 1, b: 2} +objectFromPairs([['a',1],['b',2]]) // {a: 1, b: 2} ``` diff --git a/snippets/objectToPairs.md b/snippets/objectToPairs.md index 6ea5fc051..6d73bc93b 100644 --- a/snippets/objectToPairs.md +++ b/snippets/objectToPairs.md @@ -9,5 +9,5 @@ const objectToPairs = obj => Object.keys(obj).map(k => [k, obj[k]]); ``` ```js -objectToPairs({a: 1, b: 2}) -> [['a',1],['b',2]]) +objectToPairs({a: 1, b: 2}) // [['a',1],['b',2]]) ``` diff --git a/snippets/orderBy.md b/snippets/orderBy.md index ab5581dc3..48c1d1172 100644 --- a/snippets/orderBy.md +++ b/snippets/orderBy.md @@ -21,6 +21,6 @@ const orderBy = (arr, props, orders) => ```js const users = [{ 'name': 'fred', 'age': 48 },{ 'name': 'barney', 'age': 36 }, { 'name': 'fred', 'age': 40 },{ 'name': 'barney', 'age': 34 }]; -orderby(users, ['name', 'age'], ['asc', 'desc']) -> [{name: 'barney', age: 36}, {name: 'barney', age: 34}, {name: 'fred', age: 48}, {name: 'fred', age: 40}] -orderby(users, ['name', 'age']) -> [{name: 'barney', age: 34}, {name: 'barney', age: 36}, {name: 'fred', age: 40}, {name: 'fred', age: 48}] +orderby(users, ['name', 'age'], ['asc', 'desc']) // [{name: 'barney', age: 36}, {name: 'barney', age: 34}, {name: 'fred', age: 48}, {name: 'fred', age: 40}] +orderby(users, ['name', 'age']) // [{name: 'barney', age: 34}, {name: 'barney', age: 36}, {name: 'fred', age: 40}, {name: 'fred', age: 48}] ``` diff --git a/snippets/palindrome.md b/snippets/palindrome.md index 820162617..f6c8f4204 100644 --- a/snippets/palindrome.md +++ b/snippets/palindrome.md @@ -13,5 +13,5 @@ const palindrome = str => { ``` ```js -palindrome('taco cat') -> true +palindrome('taco cat') // true ``` diff --git a/snippets/percentile.md b/snippets/percentile.md index 5287521b0..92a9d2eab 100644 --- a/snippets/percentile.md +++ b/snippets/percentile.md @@ -10,5 +10,5 @@ const percentile = (arr, val) => ``` ```js -percentile([1,2,3,4,5,6,7,8,9,10], 6) -> 55 +percentile([1,2,3,4,5,6,7,8,9,10], 6) // 55 ``` diff --git a/snippets/pick.md b/snippets/pick.md index 0bfeba286..f59ff2ba6 100644 --- a/snippets/pick.md +++ b/snippets/pick.md @@ -10,5 +10,5 @@ const pick = (obj, arr) => ``` ```js -pick({ 'a': 1, 'b': '2', 'c': 3 }, ['a', 'c']) -> { 'a': 1, 'c': 3 } +pick({ 'a': 1, 'b': '2', 'c': 3 }, ['a', 'c']) // { 'a': 1, 'c': 3 } ``` diff --git a/snippets/pipe.md b/snippets/pipe.md index a7c271afe..58b606c4c 100644 --- a/snippets/pipe.md +++ b/snippets/pipe.md @@ -13,5 +13,5 @@ const pipeFunctions = (...fns) => fns.reduce((f, g) => (...args) => g(f(...args) const add5 = x => x + 5 const multiply = (x, y) => x * y const multiplyAndAdd5 = pipeFunctions(multiply, add5) -multiplyAndAdd5(5, 2) -> 15 +multiplyAndAdd5(5, 2) // 15 ``` diff --git a/snippets/powerset.md b/snippets/powerset.md index dc91406e9..3e1651174 100644 --- a/snippets/powerset.md +++ b/snippets/powerset.md @@ -10,5 +10,5 @@ const powerset = arr => ``` ```js -powerset([1,2]) -> [[], [1], [2], [2,1]] +powerset([1,2]) // [[], [1], [2], [2,1]] ``` diff --git a/snippets/primes.md b/snippets/primes.md index c8b64f1e5..87ac21a70 100644 --- a/snippets/primes.md +++ b/snippets/primes.md @@ -15,5 +15,5 @@ const primes = num => { ``` ```js -primes(10) -> [2,3,5,7] +primes(10) // [2,3,5,7] ``` diff --git a/snippets/promisify.md b/snippets/promisify.md index 4769fa5e9..f4a414cc1 100644 --- a/snippets/promisify.md +++ b/snippets/promisify.md @@ -18,5 +18,5 @@ const promisify = func => ```js const delay = promisify((d, cb) => setTimeout(cb, d)) -delay(2000).then(() => console.log('Hi!')) -> // Promise resolves after 2s +delay(2000).then(() => console.log('Hi!')) // // Promise resolves after 2s ``` diff --git a/snippets/pull.md b/snippets/pull.md index 52e0f3ea6..153732ffd 100644 --- a/snippets/pull.md +++ b/snippets/pull.md @@ -19,9 +19,9 @@ const pull = (arr, ...args) => { ```js let myArray1 = ['a', 'b', 'c', 'a', 'b', 'c']; pull(myArray1, 'a', 'c'); -console.log(myArray1) -> [ 'b', 'b' ] +console.log(myArray1) // [ 'b', 'b' ] let myArray2 = ['a', 'b', 'c', 'a', 'b', 'c']; pull(myArray2, ['a', 'c']); -console.log(myArray2) -> [ 'b', 'b' ] +console.log(myArray2) // [ 'b', 'b' ] ``` diff --git a/snippets/pullAtIndex.md b/snippets/pullAtIndex.md index bd7472567..459c2c7b2 100644 --- a/snippets/pullAtIndex.md +++ b/snippets/pullAtIndex.md @@ -21,6 +21,6 @@ const pullAtIndex = (arr, pullArr) => { let myArray = ['a', 'b', 'c', 'd']; let pulled = pullAtIndex(myArray, [1, 3]); -console.log(myArray); -> [ 'a', 'c' ] -console.log(pulled); -> [ 'b', 'd' ] +console.log(myArray); // [ 'a', 'c' ] +console.log(pulled); // [ 'b', 'd' ] ``` diff --git a/snippets/pullAtValue.md b/snippets/pullAtValue.md index 97a59a0ed..ff2559a53 100644 --- a/snippets/pullAtValue.md +++ b/snippets/pullAtValue.md @@ -20,6 +20,6 @@ const pullAtValue = (arr, pullArr) => { ```js let myArray = ['a', 'b', 'c', 'd']; let pulled = pullAtValue(myArray, ['b', 'd']); -console.log(myArray); -> [ 'a', 'c' ] -console.log(pulled); -> [ 'b', 'd' ] +console.log(myArray); // [ 'a', 'c' ] +console.log(pulled); // [ 'b', 'd' ] ``` diff --git a/snippets/randomHexColorCode.md b/snippets/randomHexColorCode.md index a40f129e2..5009e1977 100644 --- a/snippets/randomHexColorCode.md +++ b/snippets/randomHexColorCode.md @@ -9,7 +9,7 @@ const randomHexColorCode = () => '#'+(Math.random()*0xFFFFFF<<0).toString(16); ``` ```js -randomHexColorCode() -> "#e34155" -randomHexColorCode() -> "#fd73a6" -randomHexColorCode() -> "#4144c6" +randomHexColorCode() // "#e34155" +randomHexColorCode() // "#fd73a6" +randomHexColorCode() // "#4144c6" ``` diff --git a/snippets/randomIntegerInRange.md b/snippets/randomIntegerInRange.md index e8fd26077..95e9383aa 100644 --- a/snippets/randomIntegerInRange.md +++ b/snippets/randomIntegerInRange.md @@ -9,5 +9,5 @@ const randomIntegerInRange = (min, max) => Math.floor(Math.random() * (max - min ``` ```js -randomIntegerInRange(0, 5) -> 2 +randomIntegerInRange(0, 5) // 2 ``` diff --git a/snippets/randomNumberInRange.md b/snippets/randomNumberInRange.md index 53d60b16d..b249c0e51 100644 --- a/snippets/randomNumberInRange.md +++ b/snippets/randomNumberInRange.md @@ -9,5 +9,5 @@ const randomNumberInRange = (min, max) => Math.random() * (max - min) + min; ``` ```js -randomNumberInRange(2,10) -> 6.0211363285087005 +randomNumberInRange(2,10) // 6.0211363285087005 ``` diff --git a/snippets/readFileLines.md b/snippets/readFileLines.md index 1939a78cd..66afab87f 100644 --- a/snippets/readFileLines.md +++ b/snippets/readFileLines.md @@ -18,5 +18,5 @@ contents of test.txt : line3 ___________________________ let arr = readFileLines('test.txt') -console.log(arr) // -> ['line1', 'line2', 'line3'] +console.log(arr) // // ['line1', 'line2', 'line3'] ``` diff --git a/snippets/remove.md b/snippets/remove.md index 78be3257b..8d41ac5b7 100644 --- a/snippets/remove.md +++ b/snippets/remove.md @@ -14,5 +14,5 @@ const remove = (arr, func) => ``` ```js -remove([1, 2, 3, 4], n => n % 2 == 0) -> [2, 4] +remove([1, 2, 3, 4], n => n % 2 == 0) // [2, 4] ``` diff --git a/snippets/repeatString.md b/snippets/repeatString.md index 2d892b506..2f66bb047 100644 --- a/snippets/repeatString.md +++ b/snippets/repeatString.md @@ -11,6 +11,6 @@ const repeatString = (str="",num=2) => { ``` ```js -repeatString("abc",3) -> 'abcabcabc' -repeatString("abc") -> 'abcabc' +repeatString("abc",3) // 'abcabcabc' +repeatString("abc") // 'abcabc' ``` diff --git a/snippets/reverseString.md b/snippets/reverseString.md index 2fe9cdd0b..d34aac630 100644 --- a/snippets/reverseString.md +++ b/snippets/reverseString.md @@ -10,5 +10,5 @@ const reverseString = str => str.split('').reverse().join(''); ``` ```js -reverseString('foobar') -> 'raboof' +reverseString('foobar') // 'raboof' ``` diff --git a/snippets/round.md b/snippets/round.md index 9c6b55f2c..8ece6dcd1 100644 --- a/snippets/round.md +++ b/snippets/round.md @@ -10,5 +10,5 @@ const round = (n, decimals=0) => Number(`${Math.round(`${n}e${decimals}`)}e-${de ``` ```js -round(1.005, 2) -> 1.01 +round(1.005, 2) // 1.01 ``` diff --git a/snippets/runPromisesInSeries.md b/snippets/runPromisesInSeries.md index 9719ed6aa..d45b00d07 100644 --- a/snippets/runPromisesInSeries.md +++ b/snippets/runPromisesInSeries.md @@ -10,5 +10,5 @@ const runPromisesInSeries = ps => ps.reduce((p, next) => p.then(next), Promise.r ```js const delay = (d) => new Promise(r => setTimeout(r, d)) -runPromisesInSeries([() => delay(1000), () => delay(2000)]) -> //executes each promise sequentially, taking a total of 3 seconds to complete +runPromisesInSeries([() => delay(1000), () => delay(2000)]) // //executes each promise sequentially, taking a total of 3 seconds to complete ``` diff --git a/snippets/sample.md b/snippets/sample.md index 078542224..8a5dc3292 100644 --- a/snippets/sample.md +++ b/snippets/sample.md @@ -10,5 +10,5 @@ const sample = arr => arr[Math.floor(Math.random() * arr.length)]; ``` ```js -sample([3, 7, 9, 11]) -> 9 +sample([3, 7, 9, 11]) // 9 ``` diff --git a/snippets/select.md b/snippets/select.md index c3db1e047..1c6ff462f 100644 --- a/snippets/select.md +++ b/snippets/select.md @@ -11,5 +11,5 @@ const select = (from, selector) => ```js const obj = {selector: {to: {val: 'val to select'}}}; -select(obj, 'selector.to.val'); -> 'val to select' +select(obj, 'selector.to.val'); // 'val to select' ``` diff --git a/snippets/shallowClone.md b/snippets/shallowClone.md index cdef28d9b..2eed68a58 100644 --- a/snippets/shallowClone.md +++ b/snippets/shallowClone.md @@ -11,5 +11,5 @@ const shallowClone = obj => Object.assign({}, obj); ```js const a = { x: true, y: 1 }; const b = shallowClone(a); -a === b -> false +a === b // false ``` diff --git a/snippets/shuffle.md b/snippets/shuffle.md index 00b434d77..593167984 100644 --- a/snippets/shuffle.md +++ b/snippets/shuffle.md @@ -9,5 +9,5 @@ const shuffle = arr => arr.sort(() => Math.random() - 0.5); ``` ```js -shuffle([1,2,3]) -> [2,3,1] +shuffle([1,2,3]) // [2,3,1] ``` diff --git a/snippets/similarity.md b/snippets/similarity.md index e1f735be2..6a3c89b38 100644 --- a/snippets/similarity.md +++ b/snippets/similarity.md @@ -9,5 +9,5 @@ const similarity = (arr, values) => arr.filter(v => values.includes(v)); ``` ```js -similarity([1,2,3], [1,2,4]) -> [1,2] +similarity([1,2,3], [1,2,4]) // [1,2] ``` diff --git a/snippets/sortCharactersInString.md b/snippets/sortCharactersInString.md index 4e7e68cf7..8bdc6bcce 100644 --- a/snippets/sortCharactersInString.md +++ b/snippets/sortCharactersInString.md @@ -10,5 +10,5 @@ const sortCharactersInString = str => ``` ```js -sortCharactersInString('cabbage') -> 'aabbceg' +sortCharactersInString('cabbage') // 'aabbceg' ``` diff --git a/snippets/speechSynthesis.md b/snippets/speechSynthesis.md index 2ccb55375..74a628795 100644 --- a/snippets/speechSynthesis.md +++ b/snippets/speechSynthesis.md @@ -16,5 +16,5 @@ const speechSynthesis = message => { ``` ```js -speechSynthesis('Hello, World') -> // plays the message +speechSynthesis('Hello, World') // // plays the message ``` diff --git a/snippets/spreadOver.md b/snippets/spreadOver.md index d41b1cb36..3c26506c1 100644 --- a/snippets/spreadOver.md +++ b/snippets/spreadOver.md @@ -10,6 +10,6 @@ const spreadOver = fn => argsArr => fn(...argsArr); ```js const arrayMax = spreadOver(Math.max) -arrayMax([1,2,3]) -> 3 -arrayMax([1,2,4]) -> 4 +arrayMax([1,2,3]) // 3 +arrayMax([1,2,4]) // 4 ``` diff --git a/snippets/standardDeviation.md b/snippets/standardDeviation.md index 43d7139fd..0bddc99e8 100644 --- a/snippets/standardDeviation.md +++ b/snippets/standardDeviation.md @@ -17,6 +17,6 @@ const standardDeviation = (arr, usePopulation = false) => { ``` ```js -standardDeviation([10,2,38,23,38,23,21]) -> 13.284434142114991 (sample) -standardDeviation([10,2,38,23,38,23,21], true) -> 12.29899614287479 (population) +standardDeviation([10,2,38,23,38,23,21]) // 13.284434142114991 (sample) +standardDeviation([10,2,38,23,38,23,21], true) // 12.29899614287479 (population) ``` diff --git a/snippets/symmetricDifference.md b/snippets/symmetricDifference.md index 6879edb39..a26a4db4a 100644 --- a/snippets/symmetricDifference.md +++ b/snippets/symmetricDifference.md @@ -12,5 +12,5 @@ const symmetricDifference = (a, b) => { ``` ```js -symmetricDifference([1,2,3], [1,2,4]) -> [3,4] +symmetricDifference([1,2,3], [1,2,4]) // [3,4] ``` diff --git a/snippets/tail.md b/snippets/tail.md index 69983d169..cc7fb6130 100644 --- a/snippets/tail.md +++ b/snippets/tail.md @@ -9,6 +9,6 @@ const tail = arr => arr.length > 1 ? arr.slice(1) : arr; ``` ```js -tail([1,2,3]) -> [2,3] -tail([1]) -> [1] +tail([1,2,3]) // [2,3] +tail([1]) // [1] ``` diff --git a/snippets/take.md b/snippets/take.md index 07d25262d..d8257f54f 100644 --- a/snippets/take.md +++ b/snippets/take.md @@ -9,6 +9,6 @@ const take = (arr, n = 1) => arr.slice(0, n); ``` ```js -take([1, 2, 3], 5) -> [1, 2, 3] -take([1, 2, 3], 0) -> [] +take([1, 2, 3], 5) // [1, 2, 3] +take([1, 2, 3], 0) // [] ``` diff --git a/snippets/takeRight.md b/snippets/takeRight.md index 45d272ed0..13b8d47ed 100644 --- a/snippets/takeRight.md +++ b/snippets/takeRight.md @@ -9,6 +9,6 @@ const takeRight = (arr, n = 1) => arr.slice(arr.length - n, arr.length); ``` ```js -takeRight([1, 2, 3], 2) -> [ 2, 3 ] -takeRight([1, 2, 3]) -> [3] +takeRight([1, 2, 3], 2) // [ 2, 3 ] +takeRight([1, 2, 3]) // [3] ``` diff --git a/snippets/timeTaken.md b/snippets/timeTaken.md index b687edecf..15941c6b0 100644 --- a/snippets/timeTaken.md +++ b/snippets/timeTaken.md @@ -12,6 +12,6 @@ const timeTaken = callback => { ``` ```js -timeTaken(() => Math.pow(2, 10)) -> 1024 +timeTaken(() => Math.pow(2, 10)) // 1024 (logged): timeTaken: 0.02099609375ms ``` diff --git a/snippets/toCamelCase.md b/snippets/toCamelCase.md index 3b0621050..130c1c4d5 100644 --- a/snippets/toCamelCase.md +++ b/snippets/toCamelCase.md @@ -15,8 +15,8 @@ const toCamelCase = str => { ``` ```js -toCamelCase("some_database_field_name") -> 'someDatabaseFieldName' -toCamelCase("Some label that needs to be camelized") -> 'someLabelThatNeedsToBeCamelized' -toCamelCase("some-javascript-property") -> 'someJavascriptProperty' -toCamelCase("some-mixed_string with spaces_underscores-and-hyphens") -> 'someMixedStringWithSpacesUnderscoresAndHyphens' +toCamelCase("some_database_field_name") // 'someDatabaseFieldName' +toCamelCase("Some label that needs to be camelized") // 'someLabelThatNeedsToBeCamelized' +toCamelCase("some-javascript-property") // 'someJavascriptProperty' +toCamelCase("some-mixed_string with spaces_underscores-and-hyphens") // 'someMixedStringWithSpacesUnderscoresAndHyphens' ``` diff --git a/snippets/toDecimalMark.md b/snippets/toDecimalMark.md index 4a2716c0a..b670622cd 100644 --- a/snippets/toDecimalMark.md +++ b/snippets/toDecimalMark.md @@ -7,5 +7,5 @@ const toDecimalMark = num => num.toLocaleString("en-US"); ``` ```js -toDecimalMark(12305030388.9087) -> "12,305,030,388.9087" +toDecimalMark(12305030388.9087) // "12,305,030,388.9087" ``` diff --git a/snippets/toEnglishDate.md b/snippets/toEnglishDate.md index 1d600c808..974bdcc02 100644 --- a/snippets/toEnglishDate.md +++ b/snippets/toEnglishDate.md @@ -11,5 +11,5 @@ const toEnglishDate = (time) => ``` ```js -toEnglishDate('09/21/2010') -> '21/09/2010' +toEnglishDate('09/21/2010') // '21/09/2010' ``` diff --git a/snippets/toKebabCase.md b/snippets/toKebabCase.md index 50b7ead16..b1782726f 100644 --- a/snippets/toKebabCase.md +++ b/snippets/toKebabCase.md @@ -13,9 +13,9 @@ const toKebabCase = str => ``` ```js -toKebabCase("camelCase") -> 'camel-case' -toKebabCase("some text") -> 'some-text' -toKebabCase("some-mixed_string With spaces_underscores-and-hyphens") -> 'some-mixed-string-with-spaces-underscores-and-hyphens' -toKebabCase("AllThe-small Things") -> "all-the-small-things" -toKebabCase('IAmListeningToFMWhileLoadingDifferentURLOnMyBrowserAndAlsoEditingSomeXMLAndHTML') -> "i-am-listening-to-fm-while-loading-different-url-on-my-browser-and-also-editing-xml-and-html" +toKebabCase("camelCase") // 'camel-case' +toKebabCase("some text") // 'some-text' +toKebabCase("some-mixed_string With spaces_underscores-and-hyphens") // 'some-mixed-string-with-spaces-underscores-and-hyphens' +toKebabCase("AllThe-small Things") // "all-the-small-things" +toKebabCase('IAmListeningToFMWhileLoadingDifferentURLOnMyBrowserAndAlsoEditingSomeXMLAndHTML') // "i-am-listening-to-fm-while-loading-different-url-on-my-browser-and-also-editing-xml-and-html" ``` diff --git a/snippets/toOrdinalSuffix.md b/snippets/toOrdinalSuffix.md index 53541c162..bf0f19227 100644 --- a/snippets/toOrdinalSuffix.md +++ b/snippets/toOrdinalSuffix.md @@ -16,5 +16,5 @@ const toOrdinalSuffix = num => { ``` ```js -toOrdinalSuffix("123") -> "123rd" +toOrdinalSuffix("123") // "123rd" ``` diff --git a/snippets/toSnakeCase.md b/snippets/toSnakeCase.md index d978e7abc..be27970a9 100644 --- a/snippets/toSnakeCase.md +++ b/snippets/toSnakeCase.md @@ -13,10 +13,10 @@ const toSnakeCase = str =>{ ``` ```js -toSnakeCase("camelCase") -> 'camel_case' -toSnakeCase("some text") -> 'some_text' -toSnakeCase("some-javascript-property") -> 'some_javascript_property' -toSnakeCase("some-mixed_string With spaces_underscores-and-hyphens") -> 'some_mixed_string_with_spaces_underscores_and_hyphens' -toSnakeCase("AllThe-small Things") -> "all_the_smal_things" -toSnakeCase('IAmListeningToFMWhileLoadingDifferentURLOnMyBrowserAndAlsoEditingSomeXMLAndHTML') -> "i_am_listening_to_fm_while_loading_different_url_on_my_browser_and_also_editing_some_xml_and_html" +toSnakeCase("camelCase") // 'camel_case' +toSnakeCase("some text") // 'some_text' +toSnakeCase("some-javascript-property") // 'some_javascript_property' +toSnakeCase("some-mixed_string With spaces_underscores-and-hyphens") // 'some_mixed_string_with_spaces_underscores_and_hyphens' +toSnakeCase("AllThe-small Things") // "all_the_smal_things" +toSnakeCase('IAmListeningToFMWhileLoadingDifferentURLOnMyBrowserAndAlsoEditingSomeXMLAndHTML') // "i_am_listening_to_fm_while_loading_different_url_on_my_browser_and_also_editing_some_xml_and_html" ``` diff --git a/snippets/truncateString.md b/snippets/truncateString.md index 56561cc7f..66fc5d855 100644 --- a/snippets/truncateString.md +++ b/snippets/truncateString.md @@ -11,5 +11,5 @@ const truncateString = (str, num) => ``` ```js -truncateString('boomerang', 7) -> 'boom...' +truncateString('boomerang', 7) // 'boom...' ``` diff --git a/snippets/truthCheckCollection.md b/snippets/truthCheckCollection.md index a2c4cb35e..4a8aa7e14 100644 --- a/snippets/truthCheckCollection.md +++ b/snippets/truthCheckCollection.md @@ -9,5 +9,5 @@ const truthCheckCollection = (collection, pre) => (collection.every(obj => obj[p ``` ```js -truthCheckCollection([{"user": "Tinky-Winky", "sex": "male"}, {"user": "Dipsy", "sex": "male"}], "sex") -> true +truthCheckCollection([{"user": "Tinky-Winky", "sex": "male"}, {"user": "Dipsy", "sex": "male"}], "sex") // true ``` diff --git a/snippets/union.md b/snippets/union.md index d141d2a3e..155fbd7c4 100644 --- a/snippets/union.md +++ b/snippets/union.md @@ -9,5 +9,5 @@ const union = (a, b) => Array.from(new Set([...a, ...b])); ``` ```js -union([1,2,3], [4,3,2]) -> [1,2,3,4] +union([1,2,3], [4,3,2]) // [1,2,3,4] ``` diff --git a/snippets/validateNumber.md b/snippets/validateNumber.md index 075e6b4f9..70840cf88 100644 --- a/snippets/validateNumber.md +++ b/snippets/validateNumber.md @@ -11,5 +11,5 @@ const validateNumber = n => !isNaN(parseFloat(n)) && isFinite(n) && Number(n) == ``` ```js -validateNumber('10') -> true +validateNumber('10') // true ``` diff --git a/snippets/without.md b/snippets/without.md index 044f2e8f6..594ea2edd 100644 --- a/snippets/without.md +++ b/snippets/without.md @@ -11,5 +11,5 @@ const without = (arr, ...args) => arr.filter(v => !args.includes(v)); ``` ```js -without([2, 1, 2, 3], 1, 2) -> [3] +without([2, 1, 2, 3], 1, 2) // [3] ``` diff --git a/snippets/words.md b/snippets/words.md index 47d70659d..3d8097da7 100644 --- a/snippets/words.md +++ b/snippets/words.md @@ -10,6 +10,6 @@ const words = (str, pattern = /[^a-zA-Z-]+/) => str.split(pattern).filter(Boolea ``` ```js -words("I love javaScript!!") -> ["I", "love", "javaScript"] -words("python, javaScript & coffee") -> ["python", "javaScript", "coffee"] +words("I love javaScript!!") // ["I", "love", "javaScript"] +words("python, javaScript & coffee") // ["python", "javaScript", "coffee"] ``` diff --git a/snippets/zip.md b/snippets/zip.md index 1d3a9080d..92613ff34 100644 --- a/snippets/zip.md +++ b/snippets/zip.md @@ -16,6 +16,6 @@ const zip = (...arrays) => { ``` ```js -zip(['a', 'b'], [1, 2], [true, false]); -> [['a', 1, true], ['b', 2, false]] -zip(['a'], [1, 2], [true, false]); -> [['a', 1, true], [undefined, 2, false]] +zip(['a', 'b'], [1, 2], [true, false]); // [['a', 1, true], ['b', 2, false]] +zip(['a'], [1, 2], [true, false]); // [['a', 1, true], [undefined, 2, false]] ``` diff --git a/snippets/zipObject.md b/snippets/zipObject.md index a9ea71146..99d134ac8 100644 --- a/snippets/zipObject.md +++ b/snippets/zipObject.md @@ -9,6 +9,6 @@ const zipObject = ( props, values ) => props.reduce( ( obj, prop, index ) => ( o ``` ```js -zipObject(['a','b','c'], [1,2]) -> {a: 1, b: 2, c: undefined} -zipObject(['a','b'], [1,2,3]) -> {a: 1, b: 2} +zipObject(['a','b','c'], [1,2]) // {a: 1, b: 2, c: undefined} +zipObject(['a','b'], [1,2,3]) // {a: 1, b: 2} ```