2017-11-16 12 views
1

_.filterプロパティを使用して配列をフィルタリングしようとしています。 matchesPropertyの短縮形を使用したいが、まっすぐな比較をしたくない。lodashを使用してオブジェクトのプロパティをフィルタリングする

例えば、これは動作します: .each( .filter(this.across、['len'、3])、dostuff);

私は9以上の値をフィルタ処理する場合、私は、関数を使用する必要がある: .each( .filter(this.across、機能(O){< 9 o.lenリターン})、dostuff );

これを行うにはもっとうまくいく方法がありますか?

答えて

0

私はdostuffthis.acrossが何であるかを知っているが、あなたは財産lenとオブジェクトの配列を持っていると仮定しましょう、あなたはあなたが機能的な自由点でこれを行うことができます9.

未満の値をフィルタ処理する必要はありませんスタイルはロダッシュだけですが、矢印機能を使用するよりも複雑に見えます。 matchesPropertyの略語は、同等性の比較のためにのみ機能するため、この場合は使用できません。

const arr = [ 
 
    { len: 2 }, // keep 
 
    { len: 5 }, // keep 
 
    { len: 9 }, 
 
    { len: 22 }, 
 
    { len: 8 } // keep 
 
] 
 

 
// point free functional style 
 
const filtered = _.filter(arr, _.flow(_.property('len'), _.partial(_.gt, 9))) 
 

 

 
// with arrow function 
 
const filtered2 = _.filter(arr, o => o.len < 9) 
 

 
console.log(filtered) 
 
console.log(filtered2)
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.4/lodash.min.js"></script>

は下の両方のオプションを参照してください。

関連する問題