@extra-array/range
Version:
Finds smallest and largest entries.
28 lines (27 loc) • 588 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]];
}
export { range as default };