UNPKG

@extra-array/range

Version:

Finds smallest and largest entries.

28 lines (27 loc) 588 B
function id(v) { return v; } function cmp(a, b) { return a < b ? -1 : (a > b ? 1 : 0); } function range(x, fc = null, fm = null) { var fc = fc || cmp, fm = fm || id; var mi = -1, mu, mv; var ni = -1, nu, nv; var i = -1; for (var u of x) { var v = fm(u, ++i, x); if (i === 0 || fc(v, mv) < 0) { mi = i; mu = u; mv = v; } if (i === 0 || fc(v, nv) > 0) { ni = i; nu = u; nv = v; } } return [[mi, mu], [ni, nu]]; } export { range as default };