UNPKG

597 BJavaScriptView Raw
1'use strict';
2function id(v) {
3 return v;
4}
5function cmp(a, b) {
6 return a < b ? -1 : (a > b ? 1 : 0);
7}
8function range(x, fc = null, fm = null) {
9 var fc = fc || cmp, fm = fm || id;
10 var mi = -1, mu, mv;
11 var ni = -1, nu, nv;
12 var i = -1;
13 for (var u of x) {
14 var v = fm(u, ++i, x);
15 if (i === 0 || fc(v, mv) < 0) {
16 mi = i;
17 mu = u;
18 mv = v;
19 }
20 if (i === 0 || fc(v, nv) > 0) {
21 ni = i;
22 nu = u;
23 nv = v;
24 }
25 }
26 return [[mi, mu], [ni, nu]];
27}
28module.exports = range;