初心者でもできる!GASのreduceメソッドで効率的に配列を処理する方法

最近GASでよく使うメソッドについて調べているんだけど、「reduceメソッド」って何なのかイマイチわからなくて…
猫男
猫男
catman
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メソッドの関数には二つのパラメータがあります。

  1. accumulator:処理結果を蓄積する変数
  2. currentValue:配列の現在の要素

初期値を設定することもでき、例では0が使われています。

 

なるほど、配列を一度に処理するのに便利なメソッドなんだね!けど、具体的にどんな場面で使うといいの?
猫男
猫男
catman
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
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メソッドで比較して小さい方を蓄積することで、最小値が得られます。配列の最初の要素を初期値として選択しています。これにより、全ての要素がチェックされ、最小の値が返されます。