jsはreduceメソッドを使用してコードをよりエレガントにします

jsはreduceメソッドを使用してコードをよりエレガントにします

序文

実際のプロジェクトでは、最も一般的な処理は計算とループロジックである可能性があります。配列でreduceメソッドを使用すると、多くの問題を解決し、コードスタイルをよりエレガントにすることができます。

構文を減らす

arr.reduce(コールバック(アキュムレータ、現在の値[、インデックス[、配列]])[、初期値])

パラメータの説明

リデューサー関数は次の 4 つのパラメータを受け取る必要があります。

折り返し電話

  • アキュムレータ
    • アキュムレータはコールバックの戻り値を累積します。これは、コールバックへの最後の呼び出しによって返された累積値、つまり initialValue です。
  • 現在の値
    • 処理中の配列内の要素。
  • 現在のインデックス
    • これはオプションのパラメータであり、処理中の配列内の現在の要素のインデックスです。 initialValue が指定されている場合、開始インデックスは 0 になります。それ以外の場合は、インデックス 1 から始まります。
  • ソース配列
    • これはオプションのパラメータであり、reduce() を呼び出す配列です。

初期値

  • コールバック関数が最初に呼び出されたときに最初の引数として使用される値。 初期値が指定されていない場合は、配列の最初の要素が使用されます。 初期値のない空の配列に対してreduceを呼び出すと、エラーが発生します。

戻り値

  • 関数累積処理の結果

一般的なreduceメソッド

配列内のすべての要素の合計

定数arr = [1, 2, 3, 4];
定数結果 = arr.reduce((acc, cur) => acc + cur)
​
console.log(結果) // 10

配列内の各要素の出現回数を数える

定数数値 = ['1', '1', '1', '2', '3'];
const countednums = nums.reduce((acc, cur) => { 
  (現在の状態がaccの場合){
    acc[cur]++;
  }
  それ以外 {
    acc[cur] = 1;
  }
  acc を返します。
}, {});
​
console.log(countednums); // {1: 3, 2: 1, 3: 1}

配列の平坦化

定数 arr = [['a', 'b'], ['b', 'c'], ['d', 'e']]
定数フラット化 = arr => {
  戻り値 arr.reduce((acc, cur) => {
    acc.concat(cur) を返す
  }, [])
}
​
console.log(flatten(arr)); // ["a", "b", "b", "c", "d", "e"]

アレイ重複排除

定数arr = [22,341,124,54,4,21,4,4,1,4,4];
定数結果 = arr.sort().reduce((acc, cur) => {
    if(acc.length === 0 || acc[acc.length-1] !== cur) {
        acc.push(cur);
   }
    acc を返します。
}, []);
​
console.log(結果); // [1, 124, 21, 22, 341, 4, 54]

配列内の最大値を見つける

定数arr = [1, 2, 3, 5, 1]
結果を arr.reduce((acc, cur) => Math.max(acc, cur)) とします。
​
console.log(結果)

約束は順番に呼び出されます

このメソッドは、実際にプロミスの値を処理し、前のプロミスの値を次のプロミスの値として処理します。

定数prom1 = a => {
  新しいPromiseを返します((resolve => {
    解決する
  }))
}
定数prom2 = a => {
  新しいPromiseを返します((resolve => {
    解決(a * 2)
  }))
}
定数prom3 = a => {
  新しいPromiseを返します((resolve => {
    解決(a * 3)
  }))
}

定数arr = [prom1, prom2, prom3]
定数結果 = arr.reduce((all, current) => {
  すべてを返す。次に(現在)
}, Promise.resolve(10))

結果.then(res => {
  コンソールログ(res);
})

やっと

この記事では、日常の開発でよく使用されるいくつかの削減処理メソッドを紹介します。プロジェクトで直接使用することも、再パッケージ化することもできます。

js の Reduce メソッドを使用してコードをよりエレガントにする方法についての記事はこれで終わりです。js の Reduce メソッドを使用してコードをエレガントにする方法に関するより関連性の高いコンテンツについては、123WORDPRESS.COM で以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後も 123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • JavaScript における Reduce() の 5 つの基本的な使用例
  • JavaScript 配列のreduce() メソッド
  • 8 JSのreduce使用例とreduce操作方法
  • JS での Reduce() メソッドの使用の概要
  • JavaScript Reduceの詳しい説明
  • JavaScriptのreduceの基本的な使い方を詳しく説明します

<<:  Linux プラットフォームでの Zabbix エージェントのインストールと設定方法

>>:  MySQL Strict Modeの知識ポイントの詳細な説明

推薦する

CentOS 7 で MySQL 5.7 をインストールして設定する

この記事では、以下の環境をテストします。 CentOS 7 64 ビット 最小 MySQL 5.7 ...

JavaScript フォーム検証の例

HTML フォームは、名前、電子メール アドレス、場所、年齢などのユーザー情報を収集するためによく使...

React dva実装コード

目次ドヴァdvaの使用DVAの実装非同期をサポートルーターの実装成し遂げる:ドヴァdva は、red...

Docker 経由で Spring Boot アプリケーションを公開およびデプロイするプロセスの分析

目次手動展開1.アイデアを使ってSpring Bootプロジェクトを作成する2. プロジェクトをJa...

Vueダイナミックフォームの詳細な応用

概要バックグラウンド管理システムには多くのフォーム要件があります。データをjson 形式で書き込み、...

Ubuntu 16.04.4LTS に mininet をインストールする際に発生する問題と解決策

ミニネットMininet は軽量のソフトウェア定義ネットワークおよびテスト プラットフォームです。軽...

HTML タグ: サブタグと sup タグ

今日はあまり使わないHTMLタグ「subタグ」と「supタグ」を紹介します。関連記事: HTML タ...

Vue 学習 - VueRouter ルーティングの基礎

目次1. Vueルーター1. 説明2. 選択したルートのレンダリング: 3. 基本的な動作原理2. ...

Linux ドライバ開発でよく使われる関数 copy_from_user open read write の詳細な説明

目次Linux ドライバーの共通機能 (copy_from_user open read write...

ウェブデザインと制作に関する科学的原則と提案の要約

<br />ネットワーク設計の分野では、アイトラッキングに関する研究が非常に盛んに行われ...

ウェブページのカラーマッチング例分析: 緑色のカラーマッチングウェブページ分析

<br />緑は黄色と青(寒色と暖色)の中間の色で、より穏やかな色です。そのため、緑は最...

HTML ページ ソース コード レイアウトの概要_Powernode Java Academy

HTML ページ ソース コード レイアウトの概要この紹介では、Google のホームページのソー...

Ubuntu 16.4 で完全に分散された Hadoop 環境を構築するための実践的なチュートリアル

序文この記事は主にubantu 16.4 Hadoop完全分散構築に関する関連コンテンツを紹介し、皆...

検索ナビゲーションバー付きの CSS サンプルコード

この記事では、CSS を使用して検索機能付きのナビゲーション バーを作成する方法を説明します。以下の...

Docker nginxのインストールと設定方法

DockerでNginxイメージをダウンロードする docker プル nginx Docker イ...