投稿 2024年5月26日
更新 2024年5月26日
専門用語の数:少
TypeScriptを書き始めて、配列をうまく使えるようにいろいろ調べてました。
その時に出てきたreduce。
MDNの説明を呼んでいてもわかりにくく、
処理を見てなんとなく理解しました。
ただ、それでもややこしかったので図解してみました。
①reduceの第二引数の初期値をaccumulatorに代入
②対象の配列の1つ目の要素をcurrentValueに代入
計算式でいうと、初期値(5)+配列の1つ目(1)
③1ループ目のreturnの結果をaccumulatorに代入
④対象の配列の2つ目の要素をcurrentValueに代入
計算式でいうと、1ループ目の結果(6)+配列の2つ目(2)
⑤2ループ目のreturnの結果をaccumulatorに代入
⑥対象の配列の3つ目の要素をcurrentValueに代入
計算式でいうと、2ループ目の結果(8)+配列の3つ目(3)
⑦3ループ目のreturnの結果をaccumulatorに代入
⑧対象の配列の4つ目の要素をcurrentValueに代入
計算式でいうと、3ループ目の結果(11)+配列の4つ目(4)
⑨最後にreturnの結果をtotal変数に代入
という事で、結果15という数字が求められます。
最後に全貌を載せておきます。
上記の基本的な使い方のほかに、省略可能な3つ目と4つ目の引数も使用できます。
図解した通り、英語でいうと累積値的な意味です。
今までのループの結果を保持して持ってきている感じです。
こちらも図解した通り、順番に配列の要素が格納されます。
全体的に英語がわかりにくいですが…。
こちらはシンプルに配列の要素のインデックスです。
簡単に言うとループ回数-1です。
0から始まり、ループごとに+1されていきます。
元の配列を渡してくれます。
ただし、同じ参照先のため元の配列に影響します。
使う際は直接いじらないようにしましょう。
第一引数はコールバック関数ですが、第二引数の初期値は省略可能です。
省略した場合、1ループ目の動きが少し変わります。
配列の1つ目の要素がaccumulatorに、配列の2つ目の要素がcurrentValueに代入されます。
そのためループ回数は配列の要素数-1回になります。
ループ回数が大事な処理にはご注意ください。
連想配列などのオブジェクトでも、動きは同様です。
今回の場合だと、初期値とaccumulatorとコールバックの戻り値が「number」
currentValueが配列の1要素分の型となっています。
JavaScript、TypeScriptの配列に使用するreduceの
使い方やイメージをまとめてみました。
便利が故のややこしさがありますね。
使いこなしたいが、使えば使うほど、読みにくいと言う方が増えてしまうジレンマ…。
以上、ここまで見ていただきありがとうございます。
皆さまの快適な開発ライフに、ほんの少しでもお役に立てれば幸いです。
コメント一覧