UNPKG

react-infinite-cursor

Version:

A browser-ready efficient scrolling container based on UITableView. Takes a cursor for rendering.

43 lines (35 loc) 853 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, low = 0, middle, 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 };