UNPKG

react-infinite-table

Version:
48 lines (41 loc) 856 B
"use strict"; var opts = { CLOSEST_LOWER: 1, CLOSEST_HIGHER: 2 }; var binaryIndexSearch = function binaryIndexSearch(array /* : Array<number> */ , item /* : number */ , opt /* : number */ ) /* : ?number */ { var index; var high = array.length - 1; var low = 0; var middle; var middleItem; while (low <= high) { middle = low + Math.floor((high - low) / 2); middleItem = array[middle]; if (middleItem === item) { return middle; } else if (middleItem < item) { low = middle + 1; } else if (middleItem > item) { high = middle - 1; } } if (opt === opts.CLOSEST_LOWER && low > 0) { index = low - 1; } else if (opt === opts.CLOSEST_HIGHER && high < array.length - 1) { index = high + 1; } return index; }; module.exports = { binaryIndexSearch: binaryIndexSearch, opts: opts };