bisector.js 765 B

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