1 | 'use strict';
|
2 | function id(v) {
|
3 | return v;
|
4 | }
|
5 | function cmp(a, b) {
|
6 | return a < b ? -1 : (a > b ? 1 : 0);
|
7 | }
|
8 | function 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 | }
|
28 | module.exports = range;
|