47

_.firstwithのようなものを実現し_.filterたいと思います。つまり、要素のコレクションを持ち、真偽テスト (反復子) に一致する最初のもの (存在する場合) を取得したいと思います。

たとえば、次のような配列があるとします。

var arr = [{a: 1}, {a: 5}, {a: 9}, {a: 11}, {a: 15}]

カスタム関数に一致する最初の (そして唯一の) 要素を取得したいと思います。

_.filterFirst(arr, function(el) { return el.a > 10; }); // make it

ここのところ:

_.first(arr) == {a:1}
_.filter(arr, function(...)) == [{a:11}, {a:15}]

これを行うためのクリーンなソリューションはあり_.first(_.filter(arr, iterator))ますか?

4

4 に答える 4

0

「_.find」は良い解決策です。

別の解決策は、おそらくより高速ですが、次のように「Array.prototype.every」を使用することです。

var match;
arr.every(function(x) { if (x.a > 10) { match = x; return false;} return true; })
于 2013-11-05T21:14:37.287 に答える