こんにちは!
Yuki (@yukibnb) です。]
今回はGoogle Apps Script (GAS) を使って一次元配列内の要素を検索する方法を紹介します。
一次元配列内に特定の要素が存在するかどうかで処理を分岐させたい場合に活用できます。
では見ていきましょう!
コピペでOK!一次元配列内の要素を検索する方法
≪indexOf≫ 合致する要素のインデックス番号を取得する
一次元配列に対してindexOf
メソッドを使用すると、検索したい文字列がその一次元配列内に存在するか検索できます。
そして存在する場合、その要素のインデックス番号を返します。
let fruits = ["もも", "りんご", "オレンジ", "ナシ", "りんご"]; //一次元配列fruits内の"ナシ"のインデックス番号を検索し、 //変数checkに格納する let check = fruits.indexOf("ナシ"); //ログを出力する Logger.log(check); /* ログの中身 3.0 */
くだものが入った一次元配列fruits
の中に「ナシが存在するか」、「存在する場合はナシのインデックス番号は何か」をindexOf
メソッドを使って検索しました。
検索結果を変数check
に格納し、ログを出力すると3.0
と表示されました。
これでナシは一次元配列fruits
のインデックス番号3
の要素であると確認ができました。
次にいくつかポイントと活用例を見てみましょう。
ポイントと活用例
インデックス番号は0から始まる
配列のインデックス番号は0
から始まります。
そのため先ほどのナシのインデックス番号は4
ではなく3
となります。
一次元配列の先頭から順に検索する
indexOf
メソッドは一次元配列の先頭から順に検索します。
「先頭から」という特性が次に紹介するポイントを理解するカギとなります。
最初に合致した要素のインデックス番号を返す
indexOf
メソッドは一次元配列の先頭から順に検索し、最初に合致した要素のインデックス番号を返します。
合致する要素すべてのインデックス番号を返しませんのでご注意ください。
let fruits = ["もも", "りんご", "オレンジ", "ナシ", "りんご"]; //一次元配列fruits内の"りんご"のインデックス番号を検索し、 //変数checkに格納する let check = fruits.indexOf("りんご"); //ログを出力する Logger.log(check); /* ログの中身 1.0 */
一次元配列fruits
の中にりんごは二つあります。
それぞれインデックス番号は1
と4
です。
「一次元配列の先頭から順に検索する」、「最初に合致した要素のインデックス番号を返す」という二つの特性により、indexOf
メソッドはりんごの一つ目のインデックス番号である1
を返します。
検索したいモノが一次元配列内に存在しない場合
もし検索したいモノが一次元配列内に存在しない場合、indexOf
メソッドは-1
を返します。
let fruits = ["もも", "りんご", "オレンジ", "ナシ", "りんご"]; //一次元配列fruits内の"バナナ"のインデックス番号を検索し、 //変数checkに格納する let check = fruits.indexOf("バナナ"); //ログを出力する Logger.log(check); /* ログの中身 -1.0 */
一次元配列fruits
内にバナナがあるか検索しましたが、残念ながらバナナは存在していません。
そのため変数check
には-1
が格納されます。
この特性を活かして、検索したいモノが一元配列内に存在するかどうかで処理を分岐させることが可能です。
検索したいモノが一元配列内に存在するかどうかで処理を分岐させる
検索したいモノが一元配列内に存在しない場合、indexOf
メソッドの返り値は-1
です。
検索したいモノが一元配列内に存在する場合、最初に合致した要素のインデックス番号を返します。インデックス番号は0
以上です。
この特性とif文を組み合わせて、以下のような処理をすることができます。
let fruits = ["もも", "りんご", "オレンジ", "ナシ", "りんご"]; let check = fruits.indexOf("検索したいモノ"); if (check >= 0) { //存在する場合に実施したい処理をここに記述する } else { //存在しない場合に実施したい処理ここに記述する }
if (check >= 0) { }
では変数check
の値が1
以上か確認しました。
検索したいモノが一次元配列内に存在する場合の処理を主としたい場合、こちらを使用できます。
let fruits = ["もも", "りんご", "オレンジ", "ナシ", "りんご"]; let check = fruits.indexOf("検索したいモノ"); if (check === -1) { //存在しない場合に実施したい処理ここに記述する } else { //存在する場合に実施したい処理をここに記述する }
if (check === -1) { }
では変数check
の値が-1
か確認しました。
検索したいモノが一次元配列内に存在しない場合の処理を主としたい場合、こちらを使用できます。
まとめ
今回はGoogle Apps Script (GAS) を使って一次元配列内の要素を検索する方法を紹介します。
if文と組み合わせた処理の分岐は使用頻度が高くおすすめです。
次回記事もご期待ください!