初めに
javascriptのreduceメソッドについて学習した内容のoutput用記事です。
※内容に間違いなどがある場合はご指摘をよろしくお願いします。
※こちらの記事はあくまでも個人で学習した内容のoutputとしての記事になります。
reduceメソッド
高階関数の一つ。引数として関数を取り、対象の配列の要素をその関数の処理した結果に処理を重ね凝縮した一つの値を出力する。
使ってみる
filterやmapとは違ってcallback関数の引数は「累積値,現在値,インデックス,配列」順になります。また、reduceメソッド自体も第2引数として初期値を設定することができます(第一引数はcallback関数です)。
const changes = [100, 400, -300, 120, -50, -330, 1400, 500];
const accChanges = changes.reduce(function (acc, value, i, arr) {
return acc + value;
}, 0); //初期値を0にする
関数の結果は配列の合計値になります。
1840
indexは0番から始まり、累計は次のように表示することができます。
const accChanges = changes.reduce(function (acc, value, i, arr) {
console.log(`累計${i}: ${acc}`) //追記
return acc + value;
}, 0);
初期値を0にしたため、0番目の値は0になっていることが分かります。
累計0: 0
累計1: 100
累計2: 500
累計3: 200
累計4: 320
累計5: 270
累計6: -60
累計7: 1340
これはfor of文を使えば次のように書くことができます。
let total = 0;
for (const change of changes) total += change;
console.log(total);
//1840
配列の中から最小値を求める時にもreduceメソッドを使うことができます。
const min = changes.reduce(function (acc, value) {
if (acc < value) {
return acc;
} else {
return value;
}
}, changes[0]);
console.log(min);
//-330