UNPKG

@extra-array/bsearch

Version:

Binary searches leftmost value in sorted array.

53 lines (42 loc) 1.97 kB
Binary searches leftmost value in [sorted] array. [:running:] [:vhs:] [:package:] [:moon:] [:ledger:] > Alternatives: [bsearch], [bsearchRight], [bsearchAny], [bsearchClosest].<br> > This is part of package [extra-array]. [extra-array]: https://www.npmjs.com/package/extra-array ```javascript array.bsearch(x, v, [fc], [fm]); // x: an array (sorted) // v: search value // fc: compare function (a, b) // fm: map function (v, i, x) // --> first index of value | ~(index of closest value) ``` ```javascript const array = require('extra-array'); var x = [1, 3, 3, 3, 5]; array.bsearch(x, 3); // 1 ^ found leftmost array.bsearch(x, 4); // -5 (~4) ^ not found, closest var x = [1, -3, -3, -3, 5]; array.bsearch(x, 3, (a, b) => Math.abs(a) - Math.abs(b)); // 1 ^ array.bsearch(x, 3, null, v => Math.abs(v)); // 1 ^ ``` ### references - [_.sortedIndex: lodash](https://lodash.com/docs/4.17.15#sortedIndex) - [_.sortedIndexBy: lodash](https://lodash.com/docs/4.17.15#sortedIndexBy) - [_.sortedIndexOf: lodash](https://lodash.com/docs/4.17.15#sortedIndexOf) - [array-binsearch: @krisselden](https://www.npmjs.com/package/array-binsearch) - [binarysearch: @soldair](https://www.npmjs.com/package/binarysearch) - [binary-search: @darkskyapp](https://www.npmjs.com/package/binary-search) [sorted]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort [:running:]: https://npm.runkit.com/@extra-array/bsearch [:package:]: https://www.npmjs.com/package/@extra-array/bsearch [:moon:]: https://www.npmjs.com/package/@extra-array/bsearch.min [:ledger:]: https://unpkg.com/@extra-array/bsearch/ [bsearch]: https://github.com/nodef/extra-array/wiki/bsearch [bsearchRight]: https://github.com/nodef/extra-array/wiki/bsearchRight [bsearchAny]: https://github.com/nodef/extra-array/wiki/bsearchAny [bsearchClosest]: https://github.com/nodef/extra-array/wiki/bsearchClosest [:vhs:]: https://asciinema.org/a/332020