Javascript 共通高階関数の詳細

Javascript 共通高階関数の詳細

Higher Order function 。英語ではHigher Order functionと呼ばれます。別の関数をパラメータとして受け取ることができる関数を高階関数と呼びます。

例:

関数 add(x, y, f) {
 f(x) + f(y) を返します。
}

//コードで検証:
追加(-5, 6, Math.abs); // 11

1. 一般的な高階関数

ES6配列にいくつかの新しいメソッドが追加されましたが、そのうちmapreducefilterすべて高階関数です。また、通常のsortも高階関数です。以下に3つの新しい方法を紹介します。

1.1、フィルター

filterは、配列をフィルタリングし、条件を満たすデータを返し、新しい配列を形成してそれを返し、条件を満たさないデータを破棄します。

例1:配列内の100未満のデータを取り出し、新しい配列に格納する

grad = [ 102, 188, 55, 66, 200, 800 ] とします。
arr2 = grad.filter( 関数(item){
 返品商品 <= 100
})
console.log("arr2",arr2) // 55, 66

上記の例では、 filterに渡されるパラメータは関数です。渡された関数は各要素に順番に作用し、戻り値がtruefalseかに基づいて要素を保持するか破棄するかを決定します。要件を満たすのは 55 と 66 のみなので、新しい配列にはこれら 2 つの要素のみが含まれます。

1.2、地図

マップとは地図を描くことを意味します。

元の配列は新しい配列にマップされ、元の配列は変更されずに、戻り値は新しい配列になります。新しい配列の長さは元の配列と変わりません。

例 2:データの各要素を 2 倍に拡大します。

arr2 = [ 55, 66 ] とする
arr3 = arr2.map( 項目 => {
 返品商品*2
})
//結果を返す [110, 132]

上記の例では、 mapが受け取るパラメータは関数であり、各要素に順番に作用して要素を 2 倍に拡大し、任意の複雑な操作を実行することもできます。

1.3、減らす

reduce配列を要約するプロセスです。多くの場合、配列が入力され、データの一部が出力されます。合計や平均の計算によく使用されます。

例 3:前の例で返された結果を合計します。

合計をarr3.reduce((tmp,item)=>{とする
 tmp+item を返す
})
//結果242を返す

さて、ここからが本題です。上記の 3 つの例を組み合わせた場合、最終的にどれだけシンプルに書けるでしょうか?

執筆責任者:

// 複雑な記述 let grad = [102,188,55,66,200,800]
arr2 = grad.filter(function(item){
 返品商品 <= 100
})
arr3 = arr2.map(item=>{ とする
 返品商品*2
})
合計をarr3.reduce((tmp,item)=>{とする
 tmp+item を返す
})

簡単な書き方:

// 簡単な書き方 let sum2 = grad
           .filter( 項目 => { 項目を返す <= 100 })
          .map(item=>{戻り値アイテム*2})
          .reduce((tmp,item)=>{tmp+itemを返す})

Javascript一般的な高階関数の詳細に関するこの記事はこれで終わりです。Javascript Javascript一般的な高階関数の詳細については、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • JavaScriptの高階関数の詳細な説明
  • JavaScriptの高階関数の詳細な研究
  • JavaScript 関数型プログラミングにおける高階関数の使用法の分析
  • JS高階関数の原理と使用例の分析
  • JavaScriptの高階関数の魅力を徹底解説
  • JSの高階関数5つを共有する

<<:  MySQL で削除されたレコードが有効にならない理由のトラブルシューティング

>>:  http.server に基づく LAN サーバーの構築プロセスの分析

推薦する

Vueのキャッシュ方法の例の詳細な説明

最近、「フロントエンドキャッシュ」という新しい要件が作成されました要件背景: フォームへの高頻度の繰...

Vueタイマーの詳細な使い方

この記事では、参考までにタイマーを実装するためのVueの具体的なコードを紹介します。具体的な内容は次...

Mysql 5.7.19 無料インストール版 (64 ビット) の設定方法に関する詳細なチュートリアル

公式サイトから mysql-5.7.19-winx64 をダウンロードします。これはシステムの 64...

Reactは適応性の高い仮想リストを実装する

目次変換前:変換後: 0x0の基本0x1 「固定高さ」の仮想リストを実装する原理:最適化: 0x2 ...

MySql 5.7.20 のインストールとデータおよび my.ini ファイルの構成

1. まずMySqlの公式サイトからダウンロードします参考: https://www.jb51.ne...

Vueはプライベートフィルターと基本的な使用法を定義します

プライベート フィルターとグローバル フィルターのメソッドと概念は同じですが、プライベート フィルタ...

純粋な CSS で「テキストオーバーフローの切り捨てと省略」を実装するいくつかの方法

私たちの日常的な開発作業では、テキストのオーバーフロー、切り捨て、省略は、考慮する必要がある非常に一...

純粋なCSS3で実装されたネオンライト効果

達成される効果は次のとおりです。 マウスがボタン内に移動すると、ネオンライトのような効果が生成され、...

CSS3 と JavaScript を使用して Web カラー ピッカーのサンプル コードを開発する

この例の Web カラー ピッカー機能は、ページ効果を実現するために CSS3 を使用します。つまり...

純粋な CSS3 で蝶が羽ばたく様子を再現する例

純粋なCSS3で蝶が羽ばたく様子を再現。まずはその効果をご覧ください どうですか?効果はかなりいいで...

MySQL の遅いクエリとクエリ再構築方法の記録

序文スロークエリとは何か、またスロークエリを最適化するにはどうすればよいか。以下では、これら 2 つ...

星のフラッシュ効果を実現するjs

この記事の例では、スターフラッシュ効果を実現するためのjsの具体的なコードを参考までに共有しています...

Nginx で同じドメイン名を持つ複数のプロジェクトを構成する方法

Nginx を使用して同じドメイン名で複数のプロジェクトを構成するには、次の 2 つの方法があります...

クリーンで美しいウェブデザインのための4つの原則

この記事では、 Webデザインに関連するこれら4 つの原則について説明します。これら4 つの原則を念...

Vueはズームイン、ズームアウト、ドラッグ機能を実装しています

この記事では、参考までに、ズームインとズームアウトのドラッグ機能を実現するためのVueの具体的なコー...