“A little boy holding book with surprised expression with a little boy” (本を持った少年、驚いた表情をしている) his face” by Ben White on Unsplash
Vincent D'amour
Vincent D’amour

Follow

Sep 2, 2016 – 4 min read

ロダッシュって何ですか?

LodashはUnderscoreのスーパーセットです。 Underscore とは何ですか。 Underscore とは、” 組み込みのオブジェクトを拡張することなく、便利な関数型プログラミングのヘルパーを大量に提供すること” です。 つまり、Lodashは配列、文字列、オブジェクトのためのJSヘルパーライブラリです。 ドキュメントはこちらです。 https://lodash.com/docs

Lodash を使用する理由

あらゆる種類のオブジェクトを扱うのに役立ち、汎用関数をコーディングしないので時間の節約になります。 また、コードはより少ない行数ですっきりし、すべてのブラウザーで動作するようになります。 現在使用していない場合は、真剣にそれについて考える必要があります。 _.assign

_.assign は ES6 の spread 演算子に相当するものです。 理解するのはとても簡単で、1つまたは多くのオブジェクトのプロパティをソースオブジェクトに割り当てます。

2. _.times

_.times は反復回数と n 回実行する関数を引数に取り、その結果を配列で返します。

3. _.debounce

_.debounce は、最後に呼び出されてから一定時間後に関数を呼び出します。

この例では、関数 validateEmail はエラーメッセージをすぐに表示しないために500ミリ秒後に呼び出されます。 500msのタイマーは、各キーアップでリセットされます。 この方法では、ユーザーは入力を停止するまでエラー メッセージを見ることはありません。 それはいいことですが、_.find でできることはこれだけではありません。 1行のコードで複数のプロパティを使用してオブジェクトを検索することもできます。 見てみましょう!

5. _.get と ._set

今回は、ほとんど同じことを行う 2 つの関数を紹介することで、少しごまかすことにします。 _.getはオブジェクトからプロパティ値を返し、_.setはご想像のとおり、プロパティに値をセットします。

_.set を使用するとき、パスが存在しなければ作成されます。 Cannot set property ‘items’ of undefined “エラーはもう発生しません。 _.getを使用すると、パスが存在しない場合、エラーではなくundefinedが返されます。 また、パスがundefinedに解決された場合のデフォルト値(第3引数)を指定することもできます。 すべての「結合発音符」を削除するので、「é」は「e」になります。

国際化やローカリゼーションがある場合、検索機能のためにテキストのバリを取るのは良い習慣です。 特定のプロパティを持つオブジェクトを取得しようとするときにとても役に立ちます。 例えば、100件のブログ記事があり、Idが「34abc」の記事を取得したいとします。 どうすればこれを実現できるでしょうか? 見てみましょう!

サーバーがオブジェクト コレクションを配列として返すときはいつでも、この関数はそれを整理するのに役立つことがあります。 第2引数には、関数も指定できます。

8. _.reduce

_.reduce は、フィルター関数に少し似ています。 唯一の違いは、返されるオブジェクトのフォームを選択できることです。 私が言おうとしていることが理解できない場合、それは正常です、この理由のために例があります。

Ouch! これは難しいな。 というわけで、基本的には、ユーザーを年齢でグループ化し、18歳から59歳までのユーザーのみを対象とした新しいオブジェクトを返します。 このヘルパー関数はLodashで最もよく使われる関数のひとつです。 また、ES6の一部でもあります。 また、2つのよくある間違いを指摘したいと思います。関数の最後で結果を返すことと、第3引数(ここでは{})に結果のデフォルト値を指定することを忘れないでください。 _.cloneDeep

最も難しいものの次は、最も簡単なものです。 _.cloneDeepはオブジェクトのクローンを作成します。 冗談じゃない! 新しいオブジェクトは、メモリ内に新しいアドレスを持つので、元のオブジェクトからプロパティをつぶすことはありません。

10 _.sortedUniq

これを使うと、すべての重複した値が返されません。

これは大きな配列を扱う場合のみ有用です。 もし、より良いパフォーマンスを望むなら、配列をソートし、ソートされた配列でより良く動作する関数を使用すべきです。 Lodashには、このような関数が他にもいくつかあります。 _.sortedIndex, _.sortedIndexBy, _.sortedIndexOf, _.sortedLastIndex, _.sortedLastIndexBy, _.sortedLastIndexOf, _.sortedUniq, _.sortedUniqBy.

Conclusion

Lodash には時間を短縮できるたくさんの助け船関数が用意されています。 このライブラリは非常に軽量 (69 KB) で、効率的で、人気があり、愛されています (Github で 18,000 以上が開始されています)。 頻繁に更新され、私が最後に彼らのGithubページを見たときには、0件の問題がありました(Githubページ)。 もし現在使っていないのであれば、既存のプロジェクトに組み込むのはとても簡単です。 もしあなたが近々新しいプロジェクトを始めるのであれば、本当に使うことを考えるべきでしょう。 もしあなたが、使うべきかどうか迷ってここに来たのなら……そう、使うべきでしょう。 最後に、作者が Stackoverflow で行った回答を紹介します。

Lo-Dash は、配列、文字列、オブジェクト、および arguments オブジェクトに対してより一貫したクロス環境反復処理のサポートを提供するために作成しました1。 それ以来、Underscore のスーパーセットとなり、より一貫した API 動作、より多くの機能 (AMD サポート、ディープクローン、ディープマージなど)、より徹底したドキュメントとユニットテスト (Node、Ringo、Rhino、Narwhal、PhantomJS、およびブラウザで実行するテスト)、大きな配列/オブジェクトの繰り返しに対するより良い全体的パフォーマンスと最適化、カスタムビルドとテンプレート プリコンパイルのユーティリティに対する柔軟性などが実現されたのです。

コメントを残す

メールアドレスが公開されることはありません。