Performance measuring, scroll to top, array flattening

This commit is contained in:
Angelos Chalaris
2017-12-07 12:00:34 +02:00
parent accae7f71a
commit 8f4cb628a1
4 changed files with 76 additions and 0 deletions

View File

@ -14,12 +14,15 @@
* [Current URL](#current-url) * [Current URL](#current-url)
* [Even or odd number](#even-or-odd-number) * [Even or odd number](#even-or-odd-number)
* [Fibonacci array generator](#fibonacci-array-generator) * [Fibonacci array generator](#fibonacci-array-generator)
* [Flatten array](#flatten-array)
* [Greatest common divisor (GCD)](#greatest-common-divisor-gcd) * [Greatest common divisor (GCD)](#greatest-common-divisor-gcd)
* [Initialize array with values](#initialize-array-with-values) * [Initialize array with values](#initialize-array-with-values)
* [Measure time taken by function](#measure-time-taken-by-function)
* [Random number in range](#random-number-in-range) * [Random number in range](#random-number-in-range)
* [Randomize order of array](#randomize-order-of-array) * [Randomize order of array](#randomize-order-of-array)
* [Redirect to url](#redirect-to-url) * [Redirect to url](#redirect-to-url)
* [RGB to hexadecimal](#rgb-to-hexadecimal) * [RGB to hexadecimal](#rgb-to-hexadecimal)
* [Scroll to top](#scroll-to-top)
* [Sort characters in string (alphabetical)](#sort-characters-in-string-alphabetical) * [Sort characters in string (alphabetical)](#sort-characters-in-string-alphabetical)
* [Sum of array of numbers](#sum-of-array-of-numbers) * [Sum of array of numbers](#sum-of-array-of-numbers)
* [Swap values of two variables](#swap-values-of-two-variables) * [Swap values of two variables](#swap-values-of-two-variables)
@ -92,6 +95,16 @@ var fibonacci = n =>
},[]); },[]);
``` ```
### Flatten array
Use recursion.
Use `reduce()` to get all elements that are not arrays, flatten each element that is an array.
```js
var flatten = arr =>
arr.reduce( (a, v) => a.concat( Array.isArray(v) ? flatten(v) : v ), []);
```
### Greatest common divisor (GCD) ### Greatest common divisor (GCD)
Use recursion. Use recursion.
@ -112,6 +125,19 @@ var initializeArray = (n, v = 0) =>
Array(n).fill(v); Array(n).fill(v);
``` ```
### Measure time taken by function
Use `performance.now()` to get start and end time for the function, `console.log()` the time taken.
First argument is the function name, subsequent arguments are passed to the function.
```js
var timeTaken = (f,...args) => {
var t0 = performance.now(), r = f(...args);
console.log({performance.now() - t0);
return r;
}
```
### Random number in range ### Random number in range
Use `Math.random()` to generate a random value, map it to the desired range using multiplication. Use `Math.random()` to generate a random value, map it to the desired range using multiplication.
@ -148,6 +174,21 @@ var rgbToHex = (r, g, b) =>
[r,g,b].map( v => v.toString(16).padStart(2,'0')).join(''); [r,g,b].map( v => v.toString(16).padStart(2,'0')).join('');
``` ```
### Scroll to top
Get distance from top using `document.documentElement.scrollTop` or `document.body.scrollTop`.
Scroll by a fraction of the distance from top. Use `window.requestFrame()` to animate the scrolling.
```js
var scrollToTop = _ => {
var c = document.documentElement.scrollTop || document.body.scrollTop;
if(c > 0) {
window.requestAnimationFrame(scrollToTop);
window.scrollTo(0, c - c/8);
}
}
```
### Sort characters in string (alphabetical) ### Sort characters in string (alphabetical)
Split the string using `split('')`, `sort()` utilizing `localeCompare()`, recombine using `join('')`. Split the string using `split('')`, `sort()` utilizing `localeCompare()`, recombine using `join('')`.

View File

@ -0,0 +1,9 @@
### Flatten array
Use recursion.
Use `reduce()` to get all elements that are not arrays, flatten each element that is an array.
```js
var flatten = arr =>
arr.reduce( (a, v) => a.concat( Array.isArray(v) ? flatten(v) : v ), []);
```

View File

@ -0,0 +1,12 @@
### Measure time taken by function
Use `performance.now()` to get start and end time for the function, `console.log()` the time taken.
First argument is the function name, subsequent arguments are passed to the function.
```js
var timeTaken = (f,...args) => {
var t0 = performance.now(), r = f(...args);
console.log({performance.now() - t0);
return r;
}
```

14
snippets/scroll-to-top.md Normal file
View File

@ -0,0 +1,14 @@
### Scroll to top
Get distance from top using `document.documentElement.scrollTop` or `document.body.scrollTop`.
Scroll by a fraction of the distance from top. Use `window.requestFrame()` to animate the scrolling.
```js
var scrollToTop = _ => {
var c = document.documentElement.scrollTop || document.body.scrollTop;
if(c > 0) {
window.requestAnimationFrame(scrollToTop);
window.scrollTo(0, c - c/8);
}
}
```