ReactとReduxの配列処理の説明

ReactとReduxの配列処理の説明

この記事では、reduce()、filter()、map()、every()、some()、spread 演算子など、よく使用される配列処理関数と構文を紹介します。この知識はReactやRedux自体に直接関係するものではありませんが、この章の例にはこれらの関数や構文の使い方が含まれているので、プログラムの中で学ぶことができます。また、reduce()、filter()、map() などの関数のアイデアは関数型プログラミングから来ていることも特筆に値します。JavaScript は関数型プログラミング言語であるため、もともと複雑だったロジック処理が非常にシンプルになりました。

減らす()

概要

Reduce() メソッドは関数を累積器として受け取り、配列内の各値 (左から右へ) が結合されて 1 つの値を形成します。

文法

配列.reduce(コールバック、初期値)

パラメータについては以下で説明します。
コールバック: 4 つのパラメータを含む配列内の各値を実行する関数 (リデューサーとも呼ばれます)。
previousValue: 最後のコールバック呼び出しによって返された値、または指定された初期値 (initialValue)。
currentValue: 配列内で現在処理中の要素。
index: 配列内の現在の要素のインデックス。
array: Reduce を呼び出す配列 · initialValue: 最初のコールバック呼び出しの最初のパラメーター。このパラメータは必須ではありません。

const 完了カウント = todos.reduce(
(count,todo)=>(todo.completed?count+1:count),
0);

コードの説明:

todos は配列です。
Reduce() の最初のパラメータは矢印関数です。この矢印関数の最初のパラメータ count は前の戻り値であり、2 番目のパラメータ todo は現在の要素の値です。
Reduce() の 2 番目のパラメータ 0 は初期化値であり、count の初期値を 0 にするために使用されます。
配列 todos の最初の値まで遡ると、count は 0 になります。todo は todos の最初の項目であり、戻り値は 1 増加するか、変更されません (todo.completed が true の場合は count+1 が返され、それ以外の場合は count が返されます)。
todos 配列の 2 番目の値を走査する場合、count は前の戻り値になります。 todo は todos の 2 番目の項目であり、戻り値は 1 増加するか、変更されません。
トラバーサルが完了すると、配列内のcompleted属性がtrueであるタスクの数、つまり完了したタスクの数を取得できます。

フィルター()

概要

filter() メソッドは、指定された関数を使用してすべての要素をテストし、テストに合格したすべての要素を含む新しい配列を作成します。

文法

配列.フィルター(コールバック、thisArg)

パラメータについては以下で説明します。

コールバック: 配列の各要素をテストするために使用される関数。3 つのパラメータが含まれます。要素を保持する(テストに合格する)場合は true を返し、保持しない場合は false を返します。
currentValue: 現在渡されている配列内の要素。
index: 要素のインデックス。
配列: 走査する配列。
thisArg: オプション。コールバックを実行するときに使用する this 値。

状態.filter(todo=> を返す
todo.id!==アクション.id
)

コードの説明:

状態はタスクの配列です。
filter() のパラメータは矢印関数です。矢印関数には、配列内の現在の項目である todo という 1 つのパラメーターのみがあります。矢印の後の判定ステートメントが true を返す場合、現在の項目は保持され、それ以外の場合は現在の項目は削除されます。
このコード スニペットの目的は、指定された ID と同じ ID を持つタスク配列内のタスクをフィルター処理し、新しいタスク配列を返すことです。

地図()

概要

map() メソッドは、元の配列の各要素に対して指定されたメソッドを呼び出した際の戻り値で構成される新しい配列を返します。

文法

配列.map(コールバック、thisArg)

パラメータについては以下で説明します。

コールバック: このメソッドは元の配列の要素に対して呼び出され、新しい要素を返します。このメソッドには次の 3 つのパラメーターが含まれます。
currentValue: 現在渡されている配列内の要素。
·index: 要素のインデックス。
配列: 走査する配列。
thisArg: オプション。コールバックを実行するときに使用する this 値。

状態.map(todo=>( を返す
todo.id === action.id ですか?
オブジェクトを割り当てます({},todo.{text:action.text}):
やること
));

コードの説明:

state は変更前の状態であり、配列です。
map() への引数は矢印関数です。矢印関数の最初のパラメーターは todo であり、戻り値は三項演算子を使用して新しい要素を返す式です。 idが一致する場合、0bject.assign()を通じて新しい属性がマージされます。つまり、テキスト属性がtodoに追加または書き換えられ、属性値はaction.textになります。
Object.assign() メソッドは、ソース オブジェクト自身の列挙可能なプロパティを任意の数だけターゲット オブジェクトにコピーし、ターゲット オブジェクトを返すことができます。

構文は Object.assign(target,...sources) です。target はターゲット オブジェクト、sources は任意の数のソース オブジェクトです。
このコードは、配列で指定されたタスクのテキスト プロパティを更新します。

毎()

概要

every() メソッドは、配列内のすべての要素が指定された関数のテストに合格するかどうかをテストするために使用されます。

文法

配列.every(コールバック、thisArg)

callbak: 各要素をテストするために使用される関数。
currentValue: 現在渡されている配列内の要素。
index: 要素のインデックス。
配列: トレースする配列。
thisArg: オプション。コールバックを実行するときに使用する this 値。

const areAllMarked = state.every(todo=>todo.completed)

タスク配列が走査され、各タスクの完了属性が true の場合、true を返します。

いくつかの()

概要

some() メソッドは、指定された関数のテストに合格する要素が配列内に少なくとも 1 つあるかどうかをテストするために使用されます。

文法

配列.some(コールバック[,thisArg])

パラメータについては以下で説明します。

callback: 各要素をテストするために使用される関数。
currentValue: 現在渡されている配列内の要素。
index: 要素のインデックス。
配列: 走査する配列。
thisArg: オプション。コールバックを実行するときに使用する this 値。

const areAllMarked = state.some(todo=>todo.completed)

タスク配列を走査し、完了プロパティが true であるタスクがある限り true を返します。

スプレッド演算子

概要

スプレッド演算子を使用すると、式をある時点で展開できます。一般的なシナリオには、関数パラメータ、配列要素、分解割り当てなどがあります。
さらに、JSX のコンポーネント プロパティは、スプレッド演算子を使用して割り当てることもできます。
構造化代入構文は、配列またはオブジェクトからデータを抽出し、それを別の変数に割り当てることを可能にする JavaScript 式です。

文法

関数パラメータの場合:

myFunction(...iterable0bj);

配列要素の場合:

[...反復可能オブジェクト、4、5、6]

分割代入の場合:

定数[a,b,...残り]=[1,2,3,4,5]
定数{a,b,...残り}={a:1,b:2,c:3,d:4}

React コンポーネントのプロパティ:

<App...iterable0bj/>

状態を展開
配列の各項目が現在の配列に追加されます。

戻る[
id:state.reduce((maxId,todo)=>Math,max(todo,id,maxId),-1)+1,
{
完了:false、
テキスト:アクション.テキスト、
},
...州、
];

アクションの各プロパティをコンポーネントに展開します。

<TodoItem キー = {todo.id} todo = {todo}{...アクション} />

要約する

Reduce() メソッドは関数を累積器として受け取り、配列内の各値 (左から右へ) が結合されて 1 つの値を形成します。
filter() メソッドは、指定された関数を使用してすべての要素をテストし、テストに合格したすべての要素を含む新しい配列を作成します。
map() メソッドは、元の配列の各要素に対して指定されたメソッドを呼び出した際の戻り値で構成される新しい配列を返します。 every() メソッドは、配列のすべての要素が指定された関数のテストに合格するかどうかをテストします。
some() メソッドは、指定された関数のテストに合格する要素が配列内に少なくとも 1 つあるかどうかをテストするために使用されます。
スプレッド演算子を使用すると、式をある時点で展開できます。よく使用されるフィールド変数、関数パラメータ、配列の構築と割り当て。さらに、JSX のコンポーネント プロパティは、スプレッド演算子を使用して割り当てることもできます。

ReactとReduxの配列処理に関する記事はこれで終わりです。ReactとReduxの配列処理についてさらに詳しく知りたい方は、123WORDPRESS.COMの過去の記事を検索するか、以下の関連記事を引き続きご覧ください。今後とも123WORDPRESS.COMをよろしくお願いいたします。

以下もご興味があるかもしれません:
  • 1 つの記事で React における Redux の初期の使用を理解する
  • react-reduxプラグインの詳細な紹介
  • React Redux 入門例
  • ReactとReduxの関係についての簡単な説明 react-redux
  • ReactとReduxの関係を詳しく説明

<<:  Webサービスのリモートデバッグとタイムアウト動作原理の分析

>>:  MySQL で大量のデータ (数千万) を素早く削除するためのいくつかの実用的なソリューションの詳細な説明

推薦する

MySQL インデックスの種類 (通常、ユニーク、フルテキスト) の説明

MySQL のインデックスの種類には、通常のインデックス、一意のインデックス、全文インデックスがあり...

Nest.js 環境変数の設定とシリアル化の詳細な説明

環境変数の設定の簡単な説明プログラムは、環境によって異なる環境変数を必要とします。たとえば、実稼働環...

Vueのref属性の詳細な説明

要約するこの記事はこれで終わりです。皆さんのお役に立てれば幸いです。また、123WORDPRESS....

JavaScript 組み込みオブジェクトの概要

目次1. 組み込みオブジェクト2. 数学オブジェクト1. Mathオブジェクトの使用2. 指定された...

MySQLデータベースに中国語の文字を保存するときに発生するエラーを解決する方法を教えます

目次1. 遭遇した問題2. 問題を分析する3. 本当の問題4. 解決策5. ソリューション効果1. ...

Centos7 での Mysql5.7.19 の詳細なインストールチュートリアル

1. ダウンロード公式サイトからmysql-5.7.19-linux-glibc2.12-x86_6...

CentOSにDockerをインストールする方法

ここでは比較的簡単なインストール方法のみを紹介します。 1. yumを使用してインストールするyum...

効果的なウェブフォームのための 8 つのルール

ユーザーから情報を収集する場合、Web フォームを使用するより簡単で直接的な方法はありません。適切に...

Dockerデータストレージの概要

この記事を読む前に、ボリューム、バインドマウント、tmpfs マウントの基本を理解しておいてください...

Vue のデータ応答性に関する詳細な理解

目次1. ES 構文のゲッターとセッター2. ES構文でのdefineProperty 3. Vue...

10 HTML テーブル関連タグ

実際、多くの人が「テーブルは絶対に使用すべきではないと聞いたことがある」と言いますが、これは絶対に間...

Vue はシームレスなカルーセル効果を実現

この記事では、シームレスなカルーセル効果を実現するためのVueの具体的なコードを参考までに紹介します...

ダウンロードにおすすめの氷と雪のフォント 33 種類 (個人用および商用)

01 ウィンターフレーク(個人のみ) 02 スノートップキャップ(業務用) 03 モディウス「フリ...

要素の幅(高さ)の適応を実現するCSSおよびCSS3の柔軟なボックスモデル

1. CSSは左の固定幅と右の適応幅を実現します1. ポジショニング <!DOCTYPE ht...

Portainer を使用した Docker コンテナのデプロイのプロジェクト実践

目次1. 背景2. 操作手順3. Portinerをインストールする3.1 Dockerのデプロイメ...