【JavaScript】 reduce()について
はじめに
この記事では、JavaScriptのメソッドであるreduce()
についてまとめます。
備忘録としての記事なので、完全に初心者向けとなります。
reduce()について
reduce()
は配列に対して適用され、結果を蓄積していくメソッドです。
array.reduce((callback)関数, 初期値) ※初期値は省略可
reduceの(コールバック)関数は引数を4つまでとります。
※この記事ではは、引数を2つで進めます。
例として、
1. 配列の合計値
2. 配列の最大値
3. 文字列を一文字ずつ<>で囲む
を実践していきます。
1. 配列の合計値について
reduce()
で、配列の合計値を出していきます。
const Array1 = [1, 2, 3, 4, 5];
const result1 = Array1.reduce((acc, cur) => acc + cur);
console.log(result1);
※acc
はaccumulator
の略、cur
はcurrentValue
の略です。
この結果、
15 <!-- console.log(result1) -->
となります。
コールバック関数の一番最初の第一引数acc
には、配列の一つ目である1
が代入されます。
直前の返値が次の第一引数acc
に代入され、配列の次の数字が第二引数cur
に代入されていきます。
2. 配列の最大値について
配列の中で、最大値を求めていきます。
const Array2 = [11, 2, 13, 4, 7, 16, 4];
const result2 = Array1.reduce((acc, cur) => MAth.max(acc, cur);
console.log(result2);
※Math.max(a, b)は大きい数値を返すメソッドです。
この結果
16 <!-- console.log(result1) -->
となります。
3. 文字列を一文字ずつ<>で囲む
HELLO
という文字列に対し、一文字ずつ<>で囲む<H><E><L><L><O>
を取得します。
const str = "HELLO";
const strArray = str.split("");
上記のコードで
["H", "E", "L", "L", "O"] <!-- styArray -->
の配列が得られました。
この配列に対して、下のコードを実行します。
const result3 = styArray.reduce((acc, cur) => {
return acc + "<" + cur + ">";
});
console.log(result3);
この結果、
H<E><L><L><O> <!-- console.log(result3) -->
となります。これは最初の第一引数にはH
が代入されるため、H
に<>
が囲まれなかったためです。
配列のすべての値を取得するためには初期値
を指定する必要があります。
したがって、すべての文字を<>で囲むには、以下のコードを実行します。
const result3 = strArray.reduce((acc, cur) => {
return acc + "<" + cur + ">";
}, "");
<!-- 初期値は、空文字"" -->
console.log(result3);
その結果、
<H><E><L><L><O> <!-- console.log(result3) -->
が得られます。
配列の中で一番文字数が長い要素を出力
const strings = ["apple", "banana", "cherry", "watermelon"];
function LongestString(Array) {
return Array.reduce((acc, cur) => acc.length > cur.length ? acc:cur);
}
終わり
今後も備忘録を増やしていきます!
Discussion