2016-04-18 22 views
5

です。プロジェクトにはアンダースコアが依存関係として含まれています。内部的には、私は基本的に私以上のマッピングまたはフィルタリングまたは配列を減らす私を含む複雑な配列の操作をたくさんする必要があります。我々は、ネイティブのマップ、フィルタ、Array.prototypeのメソッドを減らす。しかし、アンダースコアでも同じ方法が利用できます。[配列] .filterと_.filterのどちらを使用するかは

個人的には、_(array).filter(function(){})_.filter(array, function(){})などのラップされたオブジェクトの代わりに、自然な方法を使用する方が自然な方法を使用する方が理にかなっています。

お勧めします。

答えて

2

あなたはかなり複雑な操作が_.chain()

とアンダースコアのために行く必要があるのであれば、あなたは、このような連鎖呼び出すことができます。このサンプルでは、​​フィルタに一致したデータのすべての一意の名前を

_.chain(array).filter(function(){}).pluck('name').unique(); 

を抽出します。

ネイティブ関数とは異なり、このライブラリは、ブラウザの互換性に問題がなく、使いやすく、優れたパフォーマンスを提供するように開発されました。

+0

「_.unique(_。pluck(item => {// filter})、 'name')) 'とはどのように違うでしょうか? – Populus

+0

これは単なる書き換えであり、読みやすさです。 – Walfrat

1

これは実際に意見に基づく質問です。 Lodashはブラウザのサポートを向上させ、パフォーマンスを向上させますが、ネイティブ関数は何をしているのかは間違いありません。ネイティブ関数はまた、あなたに関連しているかもしれないし、そうでないかもしれない疎な配列などのいくつかのエッジケースを扱います。

あなたのボートは何でも浮かびます。

個人的には、一貫性があると思います。ネイティブに実装されていない機能(例えば_.uniqまたは_.pick)にアンダースコアまたはロダッシュを使用している場合は、そのまま_.filterとそれ以外のものを使用してください。