配列の要素を検索or部分一致で新たな配列を作る【GAS】
配列の要素から、取り出したい要素だけを抽出したい!
そんな時に、役立つのは配列から検索、部分一致で新たな配列を作ることです。
今回は、GASの配列から「検索、部分一致」を使って新たな配列を作成する方法を紹介します。
検索の時に役立つ正規表現も使っていくので、正規表現が不安な方は今回のコードを実践することで、より慣れていくことができます!
目次(クリックで読みたい部分にジャンプできます)
配列の要素から検索する方法(find)
まずは、GASの配列から特定の要素を検索する方法を使っていきましょう。
例えば以下のような配列があったとします。
const array = ['Bob','Tom','Jay','Jacy','Yuki','Lian'];
メンバーの名前が入っているとします。
const array = ['Bob','Tom','Jay','Jacy','Yuki','Lian'];
const result = array.find(value => value==='Tom')
console.log(result)// Tom
const result2 = array.find(value => value==='Nancy')
console.log(result2)// undefined
探したい値が「Tom」だった場合には、配列の要素が「Tom」と同じだった場合resultに代入するようにしています。
もし、探したい値がいなかった場合は、undefinedが返されます。
上の例では、「Nancy」を検索していますが、array配列には「Nancy」は含まれていません。
そのため、undefinedが返されます。
要素が何番目かを調べたい場合
検索したい要素が、配列の何番目にいるかを調べたい場合は、findIndexを使います。
先ほどのarray配列を使って例を見てみましょう。
const array = ['Bob','Tom','Jay','Jacy','Yuki','Lian'];
const result = array.findIndex(value => value==='Tom')
console.log(result)// 1
const result2 = array.findIndex(value => value==='Nancy')
console.log(result2)// -1
Tomは配列の中で2番目、1と表されます。(配列の1番目は0です。)
もし、「Nancy」のように配列にない値が検索されたら「-1」が表示されるようになります。
配列の要素から部分一致で抽出する方法(正規表現・match)
次に、配列の要素から部分一致で調べる方法について見ていきましょう。
部分一致のためには、正規表現とmatchメソッドを用います。
先ほどのarray配列を用います。
const array = ['Bob','Tom','Jay','Jacy','Yuki','Lian'];
この配列の中から、「J」から始まる要素のみを調べたいとしましょう。
// 元の配列を作成
const array = ['Bob','Tom','Jay','Jacy','Yuki','Lian'];
// 部分一致の正規表現パターン(例: "J"で始まる要素)
var partialMatchPattern = /^J/;
// 部分一致した要素を格納する新しい配列
var filteredArray = [];
// 元の配列を反復処理
for (var i = 0; i < array.length; i++) {
// 正規表現を使用して部分一致を確認
if (array[i].match(partialMatchPattern)) {
// 部分一致した場合、新しい配列に追加
filteredArray.push(array[i]);
}
}
console.log(filterdArray) // [ 'Jay', 'Jacy' ]
arrayの中に、Jから始まる要素を探し、filterdArrayに代入しています。
filterdArrayには、確かに「J」から始まる要素(Jay , Jacy)が格納されていますね。
正規表現を修正することで、部分一致の方法を修正することができます。
以下では、正規表現を変えていくつかの例を見てみましょう。
「〇〇を含む」の正規表現
〇〇という文字を含む要素のみを抽出したいとします。
その場合、正規表現は以下のように書きます。
// 部分一致の正規表現パターン("a"を含む要素)
var partialMatchPattern = /.*a.*/;
「末尾が〇〇」の正規表現
末尾が〇〇の場合に要素を抽出したい場合はどうでしょうか。
正規表現は次のように書きます。
// 部分一致の正規表現パターン(例: "y"で終わる要素)
var partialMatchPattern = /y$/;
複数の正規表現を書く場合
複数の正規表現を書く場合は、正規表現をそのまま続けて書きます。
例えば、文字列内に含まれている、と末尾が〇〇で終わるという正規表現を組み合わせるとします。
// 正規表現パターン(文字列内に "ap" が含まれ、末尾が "t" で終わる場合に一致)
var partialMatchPattern = /.*ap.*t$/;
正規表現はこれら以外にもたくさんあります。
chatGPTで、「このような正規表現を書いて」とお願いすれば簡単に書いてくれますので、それで調べてみると良いでしょう。
まとめ
今回は、配列の要素から検索と部分一致をする方法について紹介しました。
配列を加工する時にはぜひ活用してみてください!
では、また!