配列の要素を検索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で、「このような正規表現を書いて」とお願いすれば簡単に書いてくれますので、それで調べてみると良いでしょう。

まとめ

今回は、配列の要素から検索と部分一致をする方法について紹介しました。

配列を加工する時にはぜひ活用してみてください!

では、また!

(Visited 888 times, 1 visits today)