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