bisector.js 651 B

123456789101112131415161718192021222324252627
  1. import { isNil } from '@antv/util';
  2. /**
  3. * 二分右侧查找
  4. * https://github.com/d3/d3-array/blob/master/src/bisector.js
  5. */
  6. export default function (getter) {
  7. /**
  8. * x: 目标值
  9. * lo: 起始位置
  10. * hi: 结束位置
  11. */
  12. return function (a, x, _lo, _hi) {
  13. var lo = isNil(_lo) ? 0 : _lo;
  14. var hi = isNil(_hi) ? a.length : _hi;
  15. while (lo < hi) {
  16. var mid = (lo + hi) >>> 1;
  17. if (getter(a[mid]) > x) {
  18. hi = mid;
  19. }
  20. else {
  21. lo = mid + 1;
  22. }
  23. }
  24. return lo;
  25. };
  26. }
  27. //# sourceMappingURL=bisector.js.map