Binary searches closest 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.bsearchClosest(x, v, [fc], [fm]);
// x:  an array (sorted)
// v:  search value
// fc: compare function (a, b)
// fm: map function (v, i, x)
// --> index of closest value
```

```javascript
const array = require('extra-array');

var x = [1, 3, 3, 3, 5];
array.bsearchClosest(x, 3);
// 2           ^ found

array.bsearchClosest(x, 4);
// 4                  ^ not found, closest

var x = [1, -3, -3, -3, 5];
array.bsearchClosest(x, 3, (a, b) => Math.abs(a) - Math.abs(b));
// 2             ^

array.bsearchClosest(x, 3, null, v => Math.abs(v));
// 2             ^
```

### references

- [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-closest
[:package:]: https://www.npmjs.com/package/@extra-array/bsearch-closest
[:moon:]: https://www.npmjs.com/package/@extra-array/bsearch-closest.min
[:ledger:]: https://unpkg.com/@extra-array/bsearch-closest/
[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/332022
