初心者でもできる!GASのreduceメソッドで効率的に配列を処理する方法
最近GASでよく使うメソッドについて調べているんだけど、「reduceメソッド」って何なのかイマイチわからなくて…

猫男

catman
それは良い質問だね。catmanが「GAS reduceメソッド」についてわかりやすく教えてあげよう!
GASのreduceメソッドとは?
reduceメソッドは、配列の全体を処理して一つの値を返すメソッドです。数値の合計や最大値の取得などに使われます。
reduceメソッドの基本
reduceメソッドの使い方は以下の通りです。
const array = [1, 2, 3, 4, 5];
const sum = array.reduce((accumulator, currentValue) => {
return accumulator + currentValue;
}, 0);
Logger.log(sum); // 15
配列の各要素に対して関数が実行され、最終的な結果が一つの値として返されます。
reduceメソッドのパラメータ
reduceメソッドの関数には二つのパラメータがあります。
- accumulator:処理結果を蓄積する変数
- currentValue:配列の現在の要素
初期値を設定することもでき、例では0が使われています。
なるほど、配列を一度に処理するのに便利なメソッドなんだね!けど、具体的にどんな場面で使うといいの?

猫男

catman
例えば、売上データの合計や平均を計算したり、配列からユニークな値を抽出する時に使うととても便利だよ。
GASのreduceメソッドの実用例
以下に、GASでreduceメソッドを用いた具体的な例を紹介します。
売上データの合計を計算
売上データを配列で持っている時、その合計を計算することが可能です。
const sales = [100, 200, 150, 250];
const totalSales = sales.reduce((total, sale) => total + sale, 0);
Logger.log(totalSales); // 700
配列内のすべての売上を合計して700という結果になります。
ユニークな値を抽出する
配列から重複しない値を抽出する場合、reduceメソッドは役立ちます。
const numbers = [1, 2, 3, 3, 4, 4, 5];
const uniqueNumbers = numbers.reduce((result, number) => {
if (!result.includes(number)) {
result.push(number);
}
return result;
}, []);
Logger.log(uniqueNumbers); // [1, 2, 3, 4, 5]
結果として重複が排除された配列が得られます。
reduceメソッドの使い方が一気に理解できた!配列を簡潔に処理できるのはすごく便利だね!

猫男

catman
そうだろう。このメソッドを使いこなせば、GASのコードがもっとシンプルでパワフルになるはずさ。
練習問題
以下の配列から、reduceメソッドを使って最小値を取得してみましょう。
const numbers = [10, 5, 8, 20, 15];
GASを利用して実行します。
練習問題の解答・解説
以下は最小値を取得するためのコードとその解説です。
const numbers = [10, 5, 8, 20, 15];
const min = numbers.reduce((a, b) => a < b ? a : b, numbers[0]);
Logger.log(min); // 5
reduceメソッドで比較して小さい方を蓄積することで、最小値が得られます。配列の最初の要素を初期値として選択しています。これにより、全ての要素がチェックされ、最小の値が返されます。