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

第1引数「配列」の値の中で第2引数の関数の条件を満たしている時に true を返す。全部の値が条件を満たしていなければ false を返す。

■使用例

var arr = [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ];
var even = [ 2, 4, 6, 8, 10 ];
var odd =  [ 1, 3, 5, 7, 9 ];

var func = function( val ){
	return val % 2 == 0;
}

// re = true
var re = _.some( arr, func );

// re2 = true
var re2 = _.some( even, func );

// re3 = false
var re3 = _.some( odd, func );

■内部構造

  _.some = _.any = function(obj, predicate, context) {

// 第3引数が入力されていない、第2引数が関数ならそのまま。
    predicate = cb(predicate, context);
    
// 配列だったら keys = undefined 、Objectだったら keys は Object の key の配列。
    var keys = !isArrayLike(obj) && _.keys(obj),

// length 抽出処理。
        length = (keys || obj).length;
        
// 配列(Object)の各値を処理。
    for (var index = 0; index < length; index++) {
      var currentKey = keys ? keys[index] : index;

// 1回でも predicate の条件を満たした値の時にif( true )になるので true が返される。
      if (predicate(obj[currentKey], currentKey, obj)) return true;
    }
    
// 1度も条件を満たさなかったら false が返る。
    return false;
  };

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