GASで簡単!配列と二次元配列の重複削除テクニック
GASを使っていると配列の重複を無くしたい時があるんだけど、どうしたらいいんだろう?

猫男

catman
そんな時は、catmanがGASでの配列と2次元配列の重複削除について教えてやろう。簡単だぞ!
配列の重複を削除する方法
まずは、GASで配列の重複を削除する基本的な方法を紹介しよう。
Setを使った重複削除
GASでは、Setを使うと簡単に重複を削除できる。
function removeDuplicates(arr) {
return [...new Set(arr)];
}
const exampleArray = ['apple', 'banana', 'apple', 'orange'];
const uniqueArray = removeDuplicates(exampleArray);
Logger.log(uniqueArray); // ['apple', 'banana', 'orange']
ここで、Setは重複を許さない特性を持っているため、変換するだけで重複が消える。
forEachとfilterで重複削除
GASでは、forEachとfilterでも重複を削除することができる。
function removeDuplicatesWithFilter(arr) {
return arr.filter((element, index) => arr.indexOf(element) === index);
}
const newArray = removeDuplicatesWithFilter(exampleArray);
Logger.log(newArray); // ['apple', 'banana', 'orange']
配列の先頭から順に比較し、初めて出現した要素だけを残す。
なるほど、これなら配列の重複削除が簡単にできそう!

猫男
2次元配列の重複を削除する方法
次に、GASでの2次元配列の重複削除だ。データの重複している行を消す手法を学べば、表計算に役立つぞ。
マップを使った重複削除
2次元配列における重複削除は、マップを使うと便利だ。
function uniqueRows(arr) {
const seen = new Map();
return arr.filter(row => {
const key = row.join(',');
return seen.has(key) ? false : seen.set(key, true);
});
}
const example2DArray = [
['apple', 1],
['banana', 2],
['apple', 1],
['orange', 3]
];
const unique2DArray = uniqueRows(example2DArray);
Logger.log(unique2DArray); // [['apple', 1], ['banana', 2], ['orange', 3]]
各行を文字列化し、それをキーとしてMapを使うことで重複する行を排除することができる。
マップを使うと2次元配列でも簡単に重複が取り除けるのか!

猫男
GASでの重複削除の応用
これらの方法を駆使すれば、GASでの作業がはかどるはずだ。配列や2次元配列の操作はエラーの元にもなりやすいから、慎重にな。

catman
これで君もGASマスターへの道を進む一歩が踏み出せたはずだ。挑戦あるのみだよ!
練習問題
次の配列と2次元配列の重複を削除するコードを書いてください。
- 配列:[3, 6, 3, 1, 2, 2, 5]
- 2次元配列:[[‘car’, 2], [‘bike’, 1], [‘car’, 2], [‘bus’, 4]]
解答・解説
以下に、配列と2次元配列の重複を削除するGASのコードを示します。
function test() {
// 配列の重複削除
const array = [3, 6, 3, 1, 2, 2, 5];
const uniqueArray = [...new Set(array)];
Logger.log(uniqueArray); // [3, 6, 1, 2, 5]
// 2次元配列の重複削除
const array2D = [['car', 2], ['bike', 1], ['car', 2], ['bus', 4]];
const seen = new Map();
const uniqueArray2D = array2D.filter(row => {
const key = row.join(',');
return seen.has(key) ? false : seen.set(key, true);
});
Logger.log(uniqueArray2D); // [['car', 2], ['bike', 1], ['bus', 4]]
}
解説
1. Setを使えば、一瞬で配列内の重複をなくせる。GASでの一行力技だ。
2. 2次元配列の重複は、各行を連結して文字列化したキーを使ってMapで管理。見たことのあるキーを確認するだけで、重複を削除できる。効率的な手法だ。