Archived
1
0
This repository has been archived on 2023-05-15. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
home-page/node_modules/es5-ext/array/#/binary-search.js
Sean Edmunds 0584430b5c First commit
2021-12-13 17:00:40 -06:00

28 lines
600 B
JavaScript

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