UNPKG

@figliolia/data-structures

Version:

Efficient data structures for every day programming

34 lines (33 loc) 736 B
export function binarySearch(list, target, extractor) { let l = 0; let r = list.length - 1; let targetValue; if (typeof target === "number") { targetValue = target; } else { targetValue = extractor(target); } while (l <= r) { const p = (l + r) >>> 1; const mid = list[p]; let comparer; if (typeof mid === "number") { comparer = mid; } else { comparer = extractor(mid); } const diff = targetValue - comparer; if (diff === 0) { return true; } if (diff < 0) { r = p - 1; } else { l = p + 1; } } return false; }