第1引数「(内部の各値はソートされている)配列」に第2引数の値が配列に入れられる位置のindex値を返す。
■使用例
var arr = [10, 20, 30, 40, 50];
var obj = [{ name : "moe", age : 40 }, { name : "curly", age : 60 }];
var pre = { name : "larry", age : 50 };
// re = 3
var re = _.sortedIndex( arr, 35 );
// re2 = 1
var re2 = _.sortedIndex( obj, pre, "age" );
■内部構造
_.sortedIndex = function(array, obj, iteratee, context) {
// 第3引数「iteratee = undefined」な場合、_.identityが iteratee に渡される。
// 第3引数「iteratee」が関数でなくObjectでない値だった場合、_.property(value)に代入される。
iteratee = cb(iteratee, context, 1);
// 「iteratee」関数に第2引数「obj」を渡した結果。
var value = iteratee(obj);
var low = 0, high = array.length;
// low > high になるまで続く while ループ。
while (low < high) {
var mid = Math.floor((low + high) / 2);
if (iteratee(array[mid]) < value) low = mid + 1; else high = mid;
}
return low;
};