@extra-array/bsearch-closest
Version:
Binary searches closest value in sorted array.
28 lines • 733 B
JavaScript
import id from './_id';
import cmp from './_cmp';
/**
* Binary searches closest value in sorted array.
* @param x an array (sorted)
* @param v search value
* @param fc compare function (a, b)
* @param fm map function (v, i, x)
* @returns index of closest value
*/
function bsearchClosest(x, v, fc = null, fm = null) {
var fc = fc || cmp, fm = fm || id;
var v1 = fm(v, 0, null);
for (var i = 0, I = x.length; i < I;) {
var m = i + I >>> 1;
var u1 = fm(x[m], m, x);
var c = fc(u1, v1);
if (c < 0)
i = m + 1;
else if (c > 0)
I = m;
else
return m;
}
return i;
}
export default bsearchClosest;
//# sourceMappingURL=index.js.map