sortedIndex() | Underscore JS 日本語リファレンス

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

このページのトップへ戻る