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

@ -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);
}
}
```