12345678910111213141516171819202122232425262728 |
- 'use strict';
- var toPosInt = require('../../number/to-pos-integer')
- , callable = require('../../object/valid-callable')
- , value = require('../../object/valid-value')
- , floor = Math.floor;
- module.exports = function (compareFn) {
- var length, low, high, middle;
- value(this);
- callable(compareFn);
- length = toPosInt(this.length);
- low = 0;
- high = length - 1;
- while (low <= high) {
- middle = floor((low + high) / 2);
- if (compareFn(this[middle]) < 0) high = middle - 1;
- else low = middle + 1;
- }
- if (high < 0) return 0;
- if (high >= length) return length - 1;
- return high;
- };
|