1 | import id from './_id';
|
2 | import cmp from './_cmp';
|
3 | /**
|
4 | * Binary searches value in sorted array.
|
5 | * @param x an array (sorted)
|
6 | * @param v search value
|
7 | * @param fc compare function (a, b)
|
8 | * @param fm map function (v, i, x)
|
9 | * @returns index of value | ~(index of closest value)
|
10 | */
|
11 | function bsearchAny(x, v, fc = null, fm = null) {
|
12 | var fc = fc || cmp, fm = fm || id;
|
13 | var v1 = fm(v, 0, null);
|
14 | for (var i = 0, I = x.length; i < I;) {
|
15 | var m = i + I >>> 1;
|
16 | var u1 = fm(x[m], m, x);
|
17 | var c = fc(u1, v1);
|
18 | if (c < 0)
|
19 | i = m + 1;
|
20 | else if (c > 0)
|
21 | I = m;
|
22 | else
|
23 | return m;
|
24 | }
|
25 | return ~i;
|
26 | }
|
27 | export default bsearchAny;
|
28 | //# sourceMappingURL=index.js.map |
\ | No newline at end of file |