Underscore.js_Othersの一般的なメソッドのまとめ
概要
Underscore.js は非常に無駄のないライブラリで、圧縮されたのはわずか 4KB です。これは、JavaScript プログラミングを大幅に容易にする、数十の関数型プログラミング手法を提供します。 MVC フレームワーク backbone.js はこのライブラリに基づいています。
アンダースコア (_) オブジェクトを定義しており、関数ライブラリのすべてのメソッドがこのオブジェクトに属します。これらのメソッドは、コレクション、配列、関数、オブジェクト、ユーティリティの 5 つのカテゴリに大別できます。
node.js の下にインストールします
Underscore.js はブラウザ環境だけでなく、node.js でも使用できます。インストールコマンドは次のとおりです:
npm install アンダースコア
ただし、node.jsでは_を変数名として直接使用することができないため、以下のメソッドでunderscore.jsを使用します。
var u = require("アンダースコア");
コレクションに関連するメソッド
JavaScript 言語のデータ コレクションには、配列とオブジェクトという 2 つの構造が含まれます。次の方法は両方の構造に適用されます。
地図
このメソッドは、コレクションの各メンバーに対して何らかの操作を順番に実行し、返された値を新しい配列に格納します。
_.map([1, 2, 3], function(num){ return num * 3; }); // [3, 6, 9] _.map({1 : 1, 2 : 2, 3 : 3) }, function(num, key){ return num * 3 });
それぞれ
このメソッドはマップに似ており、コレクションの各メンバーに対して順番に何らかの操作を実行しますが、値を返しません。
減らす
このメソッドは、セットの各メンバーに対して何らかの演算を順番に実行し、演算結果を特定の初期値に累積し、すべての演算が完了した後に累積された値を返します。このメソッドは 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 が返されます。
_.find([1, 2, 3, 4, 5, 6], function(num){ return num % 2 == 0; }); // 2
には
が含まれます値がコレクション内にある場合、このメソッドは true を返し、それ以外の場合は false を返します。
_.contains([1, 2, 3], 3); // true
countBy
このメソッドは、集合の各メンバーに対して何らかの演算を順番に実行し、同じ演算結果を持つメンバーを 1 つのカテゴリとしてカウントし、最後に各演算結果に対応するメンバーの数を示すオブジェクトを返します。
_.countBy([1, 2, 3, 4, 5], function(num) { return num % 2 == 0 ? 'even' : 'odd'; }); // {奇数: 3, 偶数: 2 }
シャッフル
このメソッドはシャッフルされたコレクションを返します。
_.shuffle([1, 2, 3, 4, 5, 6]) // [4, 1, 6, 3, 5, 2]
サイズ
このメソッドは、コレクションのメンバーの数を返します。
_.size({1 : 1, 2 : 2, 3 : 3}); // 3
オブジェクトに関連するメソッド
toArray
このメソッドはオブジェクトを配列に変換します。
_.toArray({a:0,b:1,c:2}) // [0, 1, 2]
摘む
このメソッドは、複数のオブジェクトの特定の属性の値を配列に抽出します。
var stooges = [{name : 'moe', 年齢 : 40}, {name : 'larry', 年齢 : 50}, {name : 'curly', 年齢 : 60}]; ); // [「萌え」、「ラリー」、「カーリー」]
関数に関連するメソッド
バインド
このメソッドは関数の実行時コンテキストをバインドし、それを新しい関数として返します。
_.bind(関数, オブジェクト, [*引数])
以下の例を参照してください。
var o = { p: 2, m: function (){console.log(p);} }; o.m() // 2 _.bind(o.m,{p:1})() // 1
すべてバインド
このメソッドは、(特に指定されていない限り) オブジェクトのすべてのメソッドをオブジェクトにバインドします。
var buttonView = { label : 'アンダースコア', onClick : function(){alert('clicked: ' this.label) }, onHover : function(){ console.log('hovering: ' this.label); ; _.bindAll(buttonView);
部分的
このメソッド バインディングは関数をパラメーターにバインドし、それを新しい関数として返します。
var add = function(a, b) { return a b; }; // 15
メモする
このメソッドは、特定のパラメーターに対する関数の実行結果をキャッシュします。
var fibonacci = _.memoize(function(n) { return n
関数に複数のパラメーターがある場合、キャッシュを識別するハッシュ値を生成するために hashFunction を提供する必要があります。
遅延
このメソッドは、関数の実行を指定した時間延期できます。
var log = _.bind(console.log, console) _.lay(log, 1000, '後でログに記録'); // '後でログに記録'
延期
このメソッドは、setTimeout による実行の遅延の効果と同様に、実行されるタスクの数が 0 に達するまで関数の実行を延期できます。
_.defer(function(){alert('deferred'); });
スロットル
このメソッドは、関数の新しいバージョンを返します。この新しいバージョンの関数を連続して呼び出す場合は、次の実行をトリガーするまでに一定時間待機する必要があります。
// updatePosition 関数の新しいバージョンを返します var throttled = _.throttle(updatePosition, 100) // 関数の新しいバージョンは 100 ミリ秒ごとにのみトリガーされます $(window).scroll(throttled);
デバウンス
このメソッドは、関数の新しいバージョンも返します。この新しいバージョンの関数が呼び出されるたびに、前の呼び出しの間に一定の時間が必要です。そうでないと、呼び出しは無効になります。その典型的な用途は、ユーザーがボタンをダブルクリックしてフォームが 2 回送信されるのを防ぐことです。
$("ボタン").on("クリック", _.debounce(submitForm, 1000));
1 回
このメソッドは関数の新しいバージョンを返すため、この関数は 1 回だけ実行できます。主にオブジェクトの初期化に使用されます。
varInitialize = _.once(createApplication); // アプリケーションは 1 回だけ作成されます
後
このメソッドは、関数の新しいバージョンを返します。この関数は、主に、反応する前に一連の操作が完了したことを確認するために使用されます。
var renderNotes = _.after(notes.length, render); _.each(notes, function(note) { note.asyncSave({success: renderNotes}); }); // すべてのノートが保存された後、renderNote が実行されます。 1 回のみ実行
ラップ
このメソッドは関数をパラメータとして受け取り、それを別の関数に渡し、最終的に前の関数の新しいバージョンを返します。
var hello = function(name) { return "hello: " name }; hello = _.wrap(hello, function(func) { return "before, " func("moe") "; }); (); // '前、こんにちは: もえ、後'
作成
このメソッドは、一連の関数をパラメーターとして受け取り、前の関数の実行結果が次の関数の実行パラメーターとして使用されます。つまり、f(g(),h()) の形式を f(g(h())) に変換します。
var welcome = function(name){ return "こんにちは: " name; var exclaim = function(statement){ return ステートメント "!" }; var welcome = _.compose('moe') ); // 'こんにちは!'
ツールメソッド
テンプレート
このメソッドは、HTML テンプレートをコンパイルするために使用されます。 3 つのパラメータを受け入れます。
_.template(templateString, [データ], [設定])
3 つのパラメータの意味は次のとおりです:
templateString: テンプレート文字列
データ: 入力テンプレートデータ
設定: 設定
テンプレート文字列
テンプレート文字列 templateString は通常の HTML 言語であり、変数は <%= ... %> の形式で挿入されます。データ オブジェクトは変数の値を提供します。
var txt = "
"; _.template(txt, {word : "Hello World"}) // "
Hello World
「
変数の値に 5 つの特殊文字 (& < > ” ‘ /) が含まれる場合は、<%- … %> でエスケープする必要があります。
var txt = "
"; _.template(txt, {word : "H&W"}) //
H&W
JavaScript コマンドは <% … %> の形式で挿入できます。以下は判決文の一例です。
var txt = "" ""; word : "Hello World"}) // Hello World
一般的な使用法には、ループ ステートメントが含まれます。
var list = "<% _.each(people, function(name) { %>
<%= 名前 %> <% }); _.template(list, {people : ['moe', 'larry']}); 萌え
巻き毛
ラリー」
テンプレート メソッドに最初のパラメーター templateString のみがあり、2 番目のパラメーターを省略した場合、関数が返され、今後この関数にデータを入力できます。
データ
templateString 内のすべての変数は内部的には obj オブジェクトの属性であり、obj オブジェクトは 2 番目のパラメーター データ オブジェクトを参照します。次の 2 つのステートメントは同等です。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











フロントエンドのサーマルペーパーチケット印刷のためのよくある質問とソリューションフロントエンド開発におけるチケット印刷は、一般的な要件です。しかし、多くの開発者が実装しています...

JavaScriptは現代のWeb開発の基礎であり、その主な機能には、イベント駆動型のプログラミング、動的コンテンツ生成、非同期プログラミングが含まれます。 1)イベント駆動型プログラミングにより、Webページはユーザー操作に応じて動的に変更できます。 2)動的コンテンツ生成により、条件に応じてページコンテンツを調整できます。 3)非同期プログラミングにより、ユーザーインターフェイスがブロックされないようにします。 JavaScriptは、Webインタラクション、シングルページアプリケーション、サーバー側の開発で広く使用されており、ユーザーエクスペリエンスとクロスプラットフォーム開発の柔軟性を大幅に改善しています。

スキルや業界のニーズに応じて、PythonおよびJavaScript開発者には絶対的な給与はありません。 1. Pythonは、データサイエンスと機械学習でさらに支払われる場合があります。 2。JavaScriptは、フロントエンドとフルスタックの開発に大きな需要があり、その給与もかなりです。 3。影響要因には、経験、地理的位置、会社の規模、特定のスキルが含まれます。

同じIDを持つ配列要素をJavaScriptの1つのオブジェクトにマージする方法は?データを処理するとき、私たちはしばしば同じIDを持つ必要性に遭遇します...

JavaScriptを学ぶことは難しくありませんが、挑戦的です。 1)変数、データ型、関数などの基本概念を理解します。2)非同期プログラミングをマスターし、イベントループを通じて実装します。 3)DOM操作を使用し、非同期リクエストを処理することを約束します。 4)一般的な間違いを避け、デバッグテクニックを使用します。 5)パフォーマンスを最適化し、ベストプラクティスに従ってください。

この記事の視差スクロールと要素のアニメーション効果の実現に関する議論では、Shiseidoの公式ウェブサイト(https://www.shisido.co.co.jp/sb/wonderland/)と同様の達成方法について説明します。

Console.log出力の違いの根本原因に関する詳細な議論。この記事では、Console.log関数の出力結果の違いをコードの一部で分析し、その背後にある理由を説明します。 �...

フロントエンドのVSCodeと同様に、パネルドラッグアンドドロップ調整機能の実装を調べます。フロントエンド開発では、VSCODEと同様のVSCODEを実装する方法...
