複雑なJavaScript配列をフィルターする方法


TL;DR I've revived an open-source npm package that I initially built a couple of years ago but have given some TLC in the last few days. You can find it here: https://github.com/allmanaj/or-where.


数年前、同僚と私は問題に直面した.我々は、オブジェクトから文字列へのデータの複数の種類のためのダイナミックでインテリジェントなフィルタをダッシュボードにしなければなりませんでした.通常、これはJavaScriptのfilter() しかし、この例では、データがあまり変化することができなかったので、ユーザが何をしようとしていて、フィルタリングしようとしていたかを知る本当の方法がありませんでした.問題を解決するために、私は小さな、単一のJSファイルを構築しました.それは、我々がフィルタリング機能の中で長い、蛇行している状態を英語のように見えることができたことを意味しました.最終的に、我々はそれと一緒に仕事を愛し、私は小さなNPMパッケージとしてリリースしました.
例を見てみましょう.そして、データの全体のロードとそれをフィルターにかける簡単な方法で自分自身を見つける開発者のために、それがどのように生命をより単純にするかについて見ましょう:
// without or-where
users.filter(user => {
    return (user.name == 'Angus' || user.name == 'Jess' || user.name == 'Aaron') && user.age >= 25;
});

//with or-where
filter = new Builder(users);
filter.whereIn('name', ['Angus', 'Jess', 'Aaron'])
      .where('age', '>=', 25)
      .get()
この比較的基本的な例でも、それの利点を見るのは簡単です.論理ゲートを読んで、ブラケットに注意を払う必要はなく、英語のような質問を読むことができます.
組み込みメソッドの使用where() , orWhere() ,... などが最終的にはJavascriptのfilter() メソッド呼び出しget() . それはすべてそこにある!いくつかの簡単なビルディングブロックを使用して信じられないほど柔軟なクエリを作成することができますあなたのコードを読み、効率的.愛は何ですか?
Githubの完全なドキュメントを見つけることができます.https://github.com/allmanaj/or-where . あなたがパッケージが不足していると感じる機能があるならば、貢献するか、問題を開いてください!
あなたが見て、パッケージが役に立つとわかるかもしれない誰かとそれを共有するならば、私は本当に感謝します、そして、あなたが寛大であるならば、星を残してください😉