00001 var baseSortedIndexBy = require('./_baseSortedIndexBy'), 00002 identity = require('./identity'), 00003 isSymbol = require('./isSymbol'); 00004 00006 var MAX_ARRAY_LENGTH = 4294967295, 00007 HALF_MAX_ARRAY_LENGTH = MAX_ARRAY_LENGTH >>> 1; 00008 00021 function baseSortedIndex(array, value, retHighest) { 00022 var low = 0, 00023 high = array == null ? low : array.length; 00024 00025 if (typeof value == 'number' && value === value && high <= HALF_MAX_ARRAY_LENGTH) { 00026 while (low < high) { 00027 var mid = (low + high) >>> 1, 00028 computed = array[mid]; 00029 00030 if (computed !== null && !isSymbol(computed) && 00031 (retHighest ? (computed <= value) : (computed < value))) { 00032 low = mid + 1; 00033 } else { 00034 high = mid; 00035 } 00036 } 00037 return high; 00038 } 00039 return baseSortedIndexBy(array, value, identity, retHighest); 00040 } 00041 00042 module.exports = baseSortedIndex;