UNPKG

738 BJavaScriptView Raw
1import id from './_id';
2import 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 */
11function 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}
27export default bsearchAny;
28//# sourceMappingURL=index.js.map
\No newline at end of file