2017-12-04 7 views
0

Lo Dashより大きい、より小さい値を使用して配列をフィルタリングするにはどうすればよいですか?ローダッシュの_.find demo data使用Loダッシュより大きい値を使用する

:私は30

var over30 = _.find(users, function(o) { return o.age > 30; });

を超えるすべてのユーザーを検索したい

var users = [ 
    { 'user': 'barney', 'age': 36, 'active': true }, 
    { 'user': 'fred', 'age': 40, 'active': false }, 
    { 'user': 'pebbles', 'age': 1, 'active': true } 
]; 

は、しかし、これは、最初のユーザーを返しバーニー、代わりのバーニーとフレッド。

私は、次のようなさまざまな組み合わせを試みました。

_.find(users, ['age', > 30]); 
+1

それは同様にネイティブ関数を用いて行うことができます。これを注目に値します: '[{年齢:36}、{年齢:40}、{年齢:1}]フィルタ(p => p.age> 30) '; – lux

答えて

3

代わりにfilter()メソッドを使用できます。 filterは、条件に合格したすべての要素を返し、findはループを終了し、条件にtrueを返す最初の要素を返します。 DOCから

var users = [ 
 
    { 'user': 'barney', 'age': 36, 'active': true }, 
 
    { 'user': 'fred', 'age': 40, 'active': false }, 
 
    { 'user': 'pebbles', 'age': 1, 'active': true } 
 
]; 
 

 
var over30 = _.filter(users, ({age}) => age > 30) 
 
console.log(over30)
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.4/lodash.min.js"></script>

+0

美しく働いた!ありがとうございましたNenad :) – Bethany

+0

よろしくお願いします。 –

0

最初 要素述語がためtruthy返し返し、コレクションの要素で反復を見つけます。

findは、常に条件を満たす要素のすべてを返すわけではありません。

あなたがfilterを使用する必要があります。すべての 要素の配列を返すコレクションの要素の上に

反復し、ためtruthyリターンを述語。このような

書き込み、それを:

var over30 = _.filter(users, function(o) { return o.age > 30; }) 

の作業スニペット:

var users = [ 
 
    { 'user': 'barney', 'age': 36, 'active': true }, 
 
    { 'user': 'fred', 'age': 40, 'active': false }, 
 
    { 'user': 'pebbles', 'age': 1, 'active': true } 
 
]; 
 

 
var over30 = _.filter(users, el => el.age > 30); 
 

 
console.log('over30 = ', over30);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.4/lodash.min.js"></script>

+0

説明をいただきありがとうございますMayank – Bethany

+0

喜んで、それはあなたを助けました:) –

関連する問題