ikemonn's blog

技術ネタをちょこちょこと

【Underscore.js】_.someを読んだ

jashkenas/underscore_.someを読んだ。

概要

_.some(list, [predicate], [context]

listの値をpredicateに渡し、trueになるものがあればtrueを返す。

var list = [1, 2, 3, 4, 5];
var x = _.every(list, function(n) {
    return n > 3;
});
console.log(x); // true

ソースコード

_.some = _.any = function(obj, predicate, context) {
    predicate = cb(predicate, context);
    var keys = !isArrayLike(obj) && _.keys(obj),
        length = (keys || obj).length;
    for (var index = 0; index < length; index++) {
      var currentKey = keys ? keys[index] : index;
      if (predicate(obj[currentKey], currentKey, obj)) return true;
    }
    return false;
  };

_.everyの時と下記の判定で返すものが反対になったもの。

if (predicate(obj[currentKey], currentKey, obj)) return true;

参考

jashkenas/underscore