【GAS】文字列や配列検索に使うindexofについて徹底解説

今回の記事では、文字列や配列の検索時に使うindexOfについて、
使い方から、事例を踏まえながら解説していきます。

目次

GASのindexOfメソッドとは

indexOf関数とは文字列や配列において、検索したい要素が配列内の先頭から何番目にあるかを教えてくれる関数のことです。
配列内に要素が含まれているか否かの判定や
スクレイピングで必要な部分までを切り取りしたいとき
応用編で、配列内の重複の判定にも使用することができます。

GASのindexOfの使い方

GASでindexOfを使うときの基本的な書き方は下記の通りになります。
例として文字列と配列の場合を用意しました。

function myFunction(){
  var str = "apple pie";
  var array = ["orange", "apple", "peach"];
  Logger.log(str.indexOf("p", 5));
  Logger.log(array.indexOf("apple"));
}

log>
6.0
1.0

検索対象オブジェクト(文字列 or 配列).indexOf(検索したい要素, 検索開始位置)
※検索開始位置は省略可能

注意としては、検索したい位置は0からカウントされるので、イメージとしては普通に数えたときには〇番目となる〇ー1の値が返ってきます。

文字列の「apple pie」で言えば、今回はpieのpの位置が何番目かを返してくるような書き方をしました。

apple pie の5番目以降(6文字目以降)でpが先頭から何番目かを返してくれている

配列側では、「apple」が配列の要素として0番目から何番目に位置しているかを返してくれています。

検索した要素が検索対象に含まれていない場合には-1が返ってきます。

function myFunction(){
  var str = "apple pie";
  Logger.log(str.indexOf("c"));
}

log>
-1

この仕組みを利用して、文字列が含まれているかの判定に利用することもできます。

gasのindexOfで複数要素を同時に検索する

残念ながらindexOfメソッドでは複数の要素を一度に検索することができません。
文字列内に複数の要素が含まれているかどうかを判定するにはmatchを使います。

function myFunction(){
  var str = "apple,orange,peach";
  var strResult = str.match(/apple|peach/g);
  Logger.log(strResult);
}
log>
[apple,peach]

matchメソッドで正規表現を使用することによって複数の要素で存在しているかの検索をすることができます。

ただ、indexOfと違って、どの位置に含まれているかまではわからないので、
存在確認として使用する用途になります。

gasのindexOfメソッドで2次元配列

indexOfでは一次元配列での検索しかできないため、2次元配列以上では
for文などを用いて一次元配列単位にしてあげる必要があります。

function myFunction(){
  var array = [
    ["orange", "apple", "peach"],
    ["apple", "kiwy", "fish"],
    ["meat", "pork", "beaf", "apple"],
    ["orange", "peach"]
  ];
  for(var i=0; i<array.length; i++){
    Logger.log(array[i].indexOf("apple"));
  }
}

log>
1
0
3
-1

まとめ

  • indexOfの使い方は、対象オブジェクト.indexOf(検索したい要素, 検索開始位置)
  • indexOfの返り値は何番目かを返してくれるが、0始まりに注意
  • 2次元配列以上の場合は、1次元ごとの処理に変換する必要がある
  • 複数の要素の存在判定であれば、matchが有効
あわせて読みたい
GASで文字列を切り出す関数(slice, substring, substr)について徹底解説 今回の記事では、文字列データから必要な情報だけを切り出す時に使う関数について解説していきます。 【GASで文字列を切り出す方法は3つ】 GASで文字列を切り出す場合...

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメント一覧 (1件)

目次