UNPKG

@aegenet/belt-binary-search

Version:
24 lines (23 loc) 737 B
function r(f, t, e, u = 0, l = f.length) { const n = Math.floor(u + (l - u) / 2), i = e(f[n], t); return i !== 0 && (n === 0 || n === f.length - 1) ? null : i > 0 ? n === l ? null : r(f, t, e, u, n) : i < 0 ? n === u ? null : r(f, t, e, n, l) : { value: f[n], index: n }; } function o(f, t, e) { if (!e) if (typeof t == "string") e = (l, n) => l.localeCompare(n); else if (typeof t == "number" || typeof t == "bigint") e = (l, n) => l - n; else throw new Error("Invalid usage: you must specify a comparator if your searchValue is an object."); const u = f.slice(0).sort(e); return r(u, t, e); } export { r as binarySearch, o as safeBinarySearch }; //# sourceMappingURL=index.mjs.map