Skip to content

Instantly share code, notes, and snippets.

@keksipurkki
Last active March 20, 2017 22:39
Show Gist options
  • Save keksipurkki/98006c0e05b93768d1332a2eca142acb to your computer and use it in GitHub Desktop.
Save keksipurkki/98006c0e05b93768d1332a2eca142acb to your computer and use it in GitHub Desktop.
/* Copy an array */
b = a.slice();

/* Predicate is true everywhere (`all` in some languages) */
a.every(pred)

/* Predicate is true for some values (`any in some languages`) */
a.some(pred)

/* Array of integers i : lo <= i < hi with step s */
const y = (lo, hi) => Array(hi-lo).fill(undefined).map((_,i) => lo+i)

/*  In reverse order */
const y_rev = (lo, hi) => Array(hi-lo).fill(undefined).map((_,i) => hi - i)

/* The do-it-all version with step s */
const z = (lo, hi, dir = 1, s = 1) => (dir > 0 ? y : y_rev)(lo, hi).filter(i => i % s === 0);

/* Array of n random numbers r: lo <= r < hi */
const r = (n, lo, hi) => Array(n).fill(Math.random).map(r => r()*(hi-lo) + lo)

/* Same but for integers  */
const ri = (n, lo, hi) => y(n,lo,hi).map(Math.floor)

/* Flatten a nested array a of arrays (on time vs. totally) */
const is_flat = a => a.every(i => !Array.isArray(i));
const flatten = a => { for(; is_flat(a); a = a.reduce((i,j) => i.concat(j)); return a; } // flatten(..flatten(flatten(flatten(a))))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment