@extra-array/range
Version:
Finds smallest and largest entries.
29 lines (28 loc) • 597 B
JavaScript
;
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]];
}
module.exports = range;