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 |
\ | No newline at end of file |