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の知識ポイントの詳細な説明

推薦する

Dockerコンテナの接続と通信の実装

ポート マッピングは、Docker を別のコンテナーに接続する唯一の方法ではありません。 Docke...

HTMLでカメラを読み込む方法

効果図: 全体的な効果: ビデオ読み込み中: 写真:ステップ1: HTML要素を作成するまず、HTM...

JavaScriptのプリミティブ値とラッパーオブジェクトの詳細な紹介

目次序文文章プリミティブ型プリミティブ値ラッパーオブジェクト物体コンストラクタ通常機能(関数)プリミ...

VUE + OPENLAYERSがリアルタイムポジショニング機能を実現

目次序文1. ラベルスタイルを定義する2. GeoJSONデータのシミュレーション3. Vercto...

Linux カーネル デバイス ドライバー Linux カーネル 基本メモの概要

1. Linuxカーネルドライバモジュールの仕組み静的ロードでは、ドライバモジュールをカーネルにコン...

JS を使って 1 分で github+Jekyll ブログに訪問カウント機能を追加する実装

目次1分でgithub+Jekyllブログにトラフィック機能を追加する1. ジェクルとは何か1. J...

Docker で Maven プロジェクトをより速くビルドする

目次I. 概要2. 従来の多段階イメージ構築3. Buildkitを使用してイメージをビルドする4....

レスポンシブデザインについて知っておくべきこと

レスポンシブデザインとは、ウェブサイトの開発プロセス中に、ユーザーの操作やデバイス環境に応じて対応す...

Vue の computed と watch の違いを理解する方法

目次概要計算された監視プロパティを監視する要約する概要Vue プロジェクトでは、computed と...

Linux システムで Centos7 を使って ElasticSearch ミドルウェアと共通インターフェースを構築するデモ

1. ミドルウェアの紹介1. 基本概念ElasticSearch は Lucene をベースにした検...

CentOS SVN サーバーで複数のプロジェクトを管理する方法

一つの要求一般的に、企業には複数のプロジェクトがあります。SVN サーバーを設定した後は、プロジェク...

VMware Esxi のルート パスワードを忘れた後に正常に取得する方法

CentOS6 インストール ディスク (任意のバージョン) を準備するか、別の pnux インスト...

VMware vCenter 6.7 のインストール プロセス (グラフィック チュートリアル)

背景当初は VMware の公式 Web サイトから 6.7 Vcenter をダウンロードしたかっ...

MySQL の冗長インデックスと重複インデックスの詳細な説明

MySQL では、同じ列に複数のインデックスを作成できます。意図的であるかどうかにかかわらず、MyS...

Dockerイメージのエクスポートとインポート操作

基本イメージが以前に構成されていて、これらのイメージが他の場所でも必要な場合はどうなりますか?回答:...