初心者必見!GASでの2次元配列の宣言から追加・検索・結合・ソートまで徹底解説
GASで2次元配列ってどうやって扱うんだろう?初めて見るから、宣言とか追加とかさっぱりで…

猫男

catman
では、catmanが「GASの2次元配列」について詳しく教えてやろう!
GASで2次元配列の宣言方法
2次元配列は、配列の中に配列が入っている状態だ。まずは基本の宣言方法を見てみよう。
2次元配列の宣言
2次元配列を宣言する例を示すぞ。
var array2D = [
["Apple", "Red"],
["Banana", "Yellow"],
["Grapes", "Purple"]
];
これはフルーツのリストで、各フルーツの名前と色が並んでいる。
空の2次元配列の宣言
まずは空の2次元配列を宣言することもできる。
var emptyArray2D = [];
二次元配列を最初は空の状態で宣言し、後からデータを追加していけるんだ。
GASで2次元配列にデータを追加
配列にデータを追加する方法を解説しよう。
データの追加方法
配列に新しい要素を追加する際のコードだ。
emptyArray2D.push(["Orange", "Orange"]);
これで、最初に宣言した空の2次元配列に値を追加できる。
この方法で2次元配列にデータが増やせるんだね!

猫男
GASで2次元配列を検索する
次はデータを検索する方法だ。
2次元配列から要素を検索する
特定の要素を探すコードはこちら。
function findFruitColor(fruitsArray, fruitName) {
for (var i = 0; i < fruitsArray.length; i++) {
if (fruitsArray[i][0] === fruitName) {
return fruitsArray[i][1];
}
}
return "Not found";
}
var color = findFruitColor(array2D, "Banana");
// color は "Yellow" になる
この関数は、指定した果物名に対応する色を返す。
2次元配列を1次元配列に変換する
ときには2次元配列を1次元配列に変えたくなることもある。
2次元から1次元の変換方法
2次元配列を1次元配列に変換するコード例だ。
var flattenedArray = array2D.flat();
// flattenedArray は ["Apple", "Red", "Banana", "Yellow", "Grapes", "Purple"] になる
.flat() メソッドを使うと、すべての要素を1次元にすることができる。
GASで2次元配列を結合する方法
2つの2次元配列を組み合わせて一つにしたいときもある。
配列の結合方法
合体させるには、このようにするんだ。
var array1 = [["Kiwi", "Green"]];
var array2 = [["Mango", "Yellow"]];
var combinedArray = array1.concat(array2);
// combinedArray は [["Kiwi", "Green"], ["Mango", "Yellow"]] になる
.concat() を使うことで2つの配列を簡単に結合できるよ。
2つの配列がまとめられるって便利だね!

猫男
GASで2次元配列をソートする
要素を順番通りに並べ替えたいこともある。
2次元配列のソート方法
配列を条件でソートするコードを紹介しよう。
array2D.sort(function(a, b) {
if (a[0] < b[0]) return -1; if (a[0] > b[0]) return 1;
return 0;
});
// これは名前をアルファベット順でソートする
.sort() メソッドにカスタムのソート条件を指定することで、配列を自由に並べ替えられる。
わぁ、こんなにいろんな操作ができるんだ…!

猫男
練習問題
次の問題で、この記事で学んだ内容を確認してみよう。
- 空の2次元配列を宣言し、3つのフルーツとそれぞれの色を追加してみよう。
- 作成した配列から「Grapes」の色を検索してみよう。
- 1次元配列に変換して、全要素を一列にしてみよう。
解答と解説
これが解答だ。コードを使って確認してみよう。
// 1. 空の2次元配列を宣言してデータを追加
var myFruits = [];
myFruits.push(["Apple", "Red"]);
myFruits.push(["Banana", "Yellow"]);
myFruits.push(["Grapes", "Purple"]);
// 2. Color of "Grapes"を検索
function findColor(fruitsArray, fruitName) {
for (var i = 0; i < fruitsArray.length; i++) {
if (fruitsArray[i][0] === fruitName) {
return fruitsArray[i][1];
}
}
return "Not found";
}
var grapesColor = findColor(myFruits, "Grapes");
// grapesColor は "Purple" になる
// 3. 1次元配列に変換
var flatFruits = myFruits.flat();
// flatFruits は ["Apple", "Red", "Banana", "Yellow", "Grapes", "Purple"] になる
まず空の2次元配列を宣言し、push()メソッドで値を追加している。findColor()関数は特定のフルーツの色を検索し、flat()メソッドで2次元配列を1次元配列に変換しているんだ。