@extra-array/binary-search

Get index of value in sorted array.

Usage no npm install needed!

<script type="module">
  import extraArrayBinarySearch from 'https://cdn.skypack.dev/@extra-array/binary-search';
</script>

README

Get index of value in sorted array.

Use binarySearch.closest, if index of closest value is needed.
Use binarySearch.first, if index of first value is needed.
Use binarySearch.last, if index of last value is needed.

const binarySearch = require('array-binarysearch');
// binarySearch(<array>, <value>, [compare function], [this], [begin=0], [end])
// -> <index of value> | ~<index of closest value>

binarySearch([21, 42, 91, 91], 42);
// 1
binarySearch([21, 42, 91, 91], 42, null, null, 2);
// -3 (-ve => not found, closest: ~(-3) = 2)
binarySearch([21, 42, 91, 91], 91, null, null, 2, 4);
// 3

binarySearch([21, 42, 91, 91], 42, (a, b) => a===b? 0:(a<b? -1:1));
// 1
binarySearch(['G', 'KG', 'KG', 'MG'], 'g', (a, b, i) => a.toLowerCase().localeCompare(b.toLowerCase()), null, 1);
// -2 (-ve => not found, closest: ~(-2) = 1)
binarySearch(['G', 'KG', 'KG', 'MG'], 'KG', (a, b, i, arr) => a.localeCompare(b), null, 1, 4);
// 2

With extra-array try Array.binarySearch() instead.

extra-array

References: array-binsearch, binarysearch.