Plato on Github
Report Home
node_modules/es5-ext/array/#/binary-search.js
Maintainability
53.37
Lines of code
28
Difficulty
20.11
Estimated Errors
0.18
Function weight
By Complexity
By SLOC
'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; };