* INTERNAL: Get an index of an `value` in a sorted `array` by grouping search by `shift`. * * NOTE: * - This uses binary search algorithm for fast removals. * * @param array A sorted array to binary search. * @param value The value to look for. * @param shift grouping shift. * - `0` means
(array: string[], value: string, shift: number)
| 276 | * inserted) |
| 277 | */ |
| 278 | function _arrayIndexOfSorted(array: string[], value: string, shift: number): number { |
| 279 | ngDevMode && assertEqual(Array.isArray(array), true, 'Expecting an array'); |
| 280 | let start = 0; |
| 281 | let end = array.length >> shift; |
| 282 | while (end !== start) { |
| 283 | const middle = start + ((end - start) >> 1); // find the middle. |
| 284 | const current = array[middle << shift]; |
| 285 | if (value === current) { |
| 286 | return middle << shift; |
| 287 | } else if (current > value) { |
| 288 | end = middle; |
| 289 | } else { |
| 290 | start = middle + 1; // We already searched middle so make it non-inclusive by adding 1 |
| 291 | } |
| 292 | } |
| 293 | return ~(end << shift); |
| 294 | } |
no test coverage detected
searching dependent graphs…