【GAS】配列内の特定の行を削除する方法
Google Apps Script (GAS)を使用する際、配列から特定の条件を満たす行を削除する必要が生じることがよくあります。特にデータの前処理や条件に基づくフィルタリングを行う際に重宝します。この記事では、GASで配列内の特定の行を削除する方法をいくつかのパターンで紹介します。
spliceメソッドで行番号を指定して削除
spliceメソッドは、行番号を指定して配列の要素を抽出し戻り値として返し、元の配列からは該当要素を削除できます。
Array.splice(from [, num] [, val1, val2, …])
from(必須):分割対象の配列のインデックス(例:最初の要素を分割したければ「0」を指定)
※配列インデックスより大きい数が指定されたらspliceメソッドは機能しない。また、指定が負の値だった場合は配列の末尾から先頭に向かってカウントされる。
num(任意):分割対象となるスタート位置からの要素数
※指定されないか配列インデックスより大きい数が指定された場合、スタート位置からの末尾までのすべての要素を分割対象に含める。また、指定が0または負の値だった場合は分割されない。
valN(任意):配列に追加する要素
戻り値:分割した配列(または値)
let array = [
['Alice', 24],
['Bob', 19],
['Carol', 32]
];
// 1行目を元の配列から削除し新しい変数に格納
let arraySplice = array.splice(1);
console.log(array); // [ [ 'Bob', 19 ], [ 'Carol', 32 ] ]
console.log(arraySplice); // [ 'Alice', 24 ]
filterメソッドで条件指定して削除
filterメソッドは、指定された条件に一致する要素のみを新しい配列として抽出します。逆に言うと、このメソッドを使って特定の条件に一致しない要素だけを新しい配列に含めることで、特定の行を「削除」できます。
Array.filter(function(value){
return valueのテスト関数
});
let array = [
['Alice', 24],
['Bob', 19],
['Carol', 32]
];
// 1列目の年齢が20未満の行を削除する
// メソッド内では20歳以上を指定
let filter = array.filter(function(value){
return value[1] >= 20//
});
console.log(filter); // 出力: [['Alice', 24], ['Carol', 32]
配列の各要素配列の第2要素で条件付けしたいため、filterメソッド内でvalue[1]を判定しています。上記のスクリプトは下記のような書き換えも可能です。
let filter = array.filter(value => value[1] >= 20);
console.log(filter); // 出力: [['Alice', 24], ['Carol', 32]
shiftメソッドで最終行を削除
shiftメソッドを使うと先頭行を削除できます。細かい条件指定はせず、とにかく最終行だけ除きたいというときにスピーディに処理できて便利です。
Array.shift()
元の配列:最初の要素が除外される
戻り値:除外された要素
let array = [
['Alice', 24],
['Bob', 19],
['Carol', 32]
];
array.shift();
console.log(array); // [ [ 'Bob', 19 ], [ 'Carol', 32 ] ]
返り値に削除された要素が格納されるので、変数に入れて削除された側の先頭行の要素を保持することもできます。
let arrayShift = array.shift();
console.log(array); // [ [ 'Bob', 19 ], [ 'Carol', 32 ] ]
console.log(arrayShift); // [ 'Alice', 24 ]
popメソッドで最終行を削除
popメソッドを使うと最終行を削除できます。shiftメソッドの最終行版ですね。
Array.pop()
元の配列:最後の要素が削除される
戻り値:除外された要素
let array = [
['Alice', 24],
['Bob', 19],
['Carol', 32]
];
array.pop();
console.log(array); // [ [ 'Alice', 24 ], [ 'Bob', 19 ] ]
返り値に削除された要素が格納されるので、変数に入れて削除された側の要素を保持することもできます。
let arrayPop = array.pop();
console.log(array); // [ [ 'Alice', 24 ], [ 'Bob', 19 ] ]
console.log(arrayPop); // [ 'Carol', 32 ]
まとめ
GASで配列内の特定の行を削除する方法をご紹介しました。