| 1234567891011121314151617181920212223242526272829 |
- "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;
- };
|