概要
Underscore.js は非常に無駄のないライブラリで、圧縮されたのはわずか 4KB です。これは、JavaScript プログラミングを大幅に容易にする、数十の関数型プログラミング手法を提供します。 MVC フレームワーク backbone.js はこのライブラリに基づいています。
アンダースコア (_) オブジェクトを定義しており、関数ライブラリのすべてのメソッドがこのオブジェクトに属します。これらのメソッドは、コレクション、配列、関数、オブジェクト、ユーティリティの 5 つのカテゴリに大別できます。
node.js の下にインストールします
Underscore.js はブラウザ環境だけでなく、node.js でも使用できます。インストールコマンドは次のとおりです:
コレクションに関連するメソッド
JavaScript 言語のデータ コレクションには、配列とオブジェクトという 2 つの構造が含まれます。次の方法は両方の構造に適用されます。
地図
このメソッドは、コレクションの各メンバーに対して何らかの操作を順番に実行し、返された値を新しい配列に格納します。
それぞれ
このメソッドはマップに似ており、コレクションの各メンバーに対して順番に何らかの操作を実行しますが、値を返しません。
減らす
このメソッドは、セットの各メンバーに対して何らかの演算を順番に実行し、演算結果を特定の初期値に累積し、すべての演算が完了した後に累積された値を返します。このメソッドは 3 つのパラメータを受け取ります。最初のパラメーターは処理されるコレクション、2 番目のパラメーターは各メンバーで動作する関数、3 番目のパラメーターは蓄積に使用される変数です。
_.reduce([1, 2, 3], function(memo, num){ return memo num; }, 0); // 6
reduce メソッドの 2 番目のパラメーターは操作関数であり、この関数自体は 2 つのパラメーターを受け取ります。1 番目は累算に使用される変数で、2 番目はセットの各メンバーの値です。
フィルターと拒否
フィルター メソッドは、コレクションの各メンバーに対して何らかの操作を順番に実行し、操作結果が true であるメンバーのみを返します。
あらゆるもの
every メソッドは、コレクションの各メンバーに対して順番に何らかの操作を実行します。すべてのメンバーの操作結果が true の場合は true を返し、それ以外の場合は false を返します。
見つける
このメソッドは、コレクションの各メンバーに対して何らかの操作を順番に実行し、操作結果が true である最初のメンバーを返します。すべてのメンバーの演算結果が false の場合は、unknown が返されます。
には
が含まれます値がコレクション内にある場合、このメソッドは true を返し、それ以外の場合は false を返します。
countBy
このメソッドは、集合の各メンバーに対して何らかの演算を順番に実行し、同じ演算結果を持つメンバーを 1 つのカテゴリとしてカウントし、最後に各演算結果に対応するメンバーの数を示すオブジェクトを返します。
シャッフル
このメソッドはシャッフルされたコレクションを返します。
サイズ
このメソッドは、コレクションのメンバーの数を返します。
オブジェクトに関連するメソッド
toArray
このメソッドはオブジェクトを配列に変換します。
摘む
このメソッドは、複数のオブジェクトの特定の属性の値を配列に抽出します。
関数に関連するメソッド
バインド
このメソッドは関数の実行時コンテキストをバインドし、それを新しい関数として返します。
すべてバインド
このメソッドは、(特に指定されていない限り) オブジェクトのすべてのメソッドをオブジェクトにバインドします。
部分的
このメソッド バインディングは関数をパラメーターにバインドし、それを新しい関数として返します。
メモする
このメソッドは、特定のパラメーターに対する関数の実行結果をキャッシュします。
遅延
このメソッドは、関数の実行を指定した時間延期できます。
延期
このメソッドは、setTimeout による実行の遅延の効果と同様に、実行されるタスクの数が 0 に達するまで関数の実行を延期できます。
スロットル
このメソッドは、関数の新しいバージョンを返します。この新しいバージョンの関数を連続して呼び出す場合は、次の実行をトリガーするまでに一定時間待機する必要があります。
デバウンス
このメソッドは、関数の新しいバージョンも返します。この新しいバージョンの関数が呼び出されるたびに、前の呼び出しの間に一定の時間が必要です。そうでないと、呼び出しは無効になります。その典型的な用途は、ユーザーがボタンをダブルクリックしてフォームが 2 回送信されるのを防ぐことです。
1 回
このメソッドは関数の新しいバージョンを返すため、この関数は 1 回だけ実行できます。主にオブジェクトの初期化に使用されます。
後
このメソッドは、関数の新しいバージョンを返します。この関数は、主に、反応する前に一連の操作が完了したことを確認するために使用されます。
ラップ
このメソッドは関数をパラメータとして受け取り、それを別の関数に渡し、最終的に前の関数の新しいバージョンを返します。
作成
このメソッドは、一連の関数をパラメーターとして受け取り、前の関数の実行結果が次の関数の実行パラメーターとして使用されます。つまり、f(g(),h()) の形式を f(g(h())) に変換します。
ツールメソッド
テンプレート
このメソッドは、HTML テンプレートをコンパイルするために使用されます。 3 つのパラメータを受け入れます。
templateString: テンプレート文字列
データ: 入力テンプレートデータ
設定: 設定
テンプレート文字列
テンプレート文字列 templateString は通常の HTML 言語であり、変数は <%= ... %> の形式で挿入されます。データ オブジェクトは変数の値を提供します。
JavaScript コマンドは <% … %> の形式で挿入できます。以下は判決文の一例です。
データ
templateString 内のすべての変数は内部的には obj オブジェクトの属性であり、obj オブジェクトは 2 番目のパラメーター データ オブジェクトを参照します。次の 2 つのステートメントは同等です。