LANG SELRCT

Google Apps Scriptのコードを書く場所  (新規作成: スプレッドシート | スクリプトエディタ

2020年5月29日金曜日

配列内の複数オブジェクトで特定の値が存在するか知りたい


タイトルで表現するのが難しいのですが

以下のような複数のオブジェクトを含む配列があって

enがLeoのものがあるか true / false で判定したい

var objs = [
  {"en": "Aries", "ja": "おひつじ座"},
  {"en": "Taurus", "ja": "おうし座"},
  {"en": "Gemini", "ja": "ふたご座"},
  {"en": "Cancer", "ja": "かに座"},
  {"en": "Leo", "ja": "しし座"},
  {"en": "Virgo", "ja": "おとめ座"},
  {"en": "Libra", "ja": "てんびん座"},
  {"en": "Scorpius", "ja": "さそり座"},
  {"en": "Sagittarius", "ja": "いて座"},
  {"en": "Capriconus", "ja": "やぎ座"},
  {"en": "Aquarius", "ja": "みずがめ座"},
  {"en": "Pisces", "ja": "うお座"}
]



コード.gs 
var objs = [
  {"en": "Aries", "ja": "おひつじ座"},
  {"en": "Taurus", "ja": "おうし座"},
  {"en": "Gemini", "ja": "ふたご座"},
  {"en": "Cancer", "ja": "かに座"},
  {"en": "Leo", "ja": "しし座"},
  {"en": "Virgo", "ja": "おとめ座"},
  {"en": "Libra", "ja": "てんびん座"},
  {"en": "Scorpius", "ja": "さそり座"},
  {"en": "Sagittarius", "ja": "いて座"},
  {"en": "Capriconus", "ja": "やぎ座"},
  {"en": "Aquarius", "ja": "みずがめ座"},
  {"en": "Pisces", "ja": "うお座"}
]

function myFunction() {
  var value = "Leo";
  var result = hasValue(value);
  Logger.log(result);
}

function hasValue(value) {
  for(var i = 0; i < objs.length; i++) {
    var obj = objs[i];
    if(obj["en"] === value) {
      return true;
    }
  }
  return false;
}

意訳
オブジェクトたちを入れた配列を用意する














この機能がやること
探す値を決めて
hasValueに渡して
結果をログに出す


この機能がやること
objsの要素の数だけ繰り返す
objsの要素をひとつずつ取り出して
valueと同じなら
true返す


途中でtrueを返さなければfalseを返す




実行結果

var value = "Leo" で myFunction()を実行した結果→true


var value = "Cat" にして myFunction()を実行した結果→false


最初に思いついた書き方

hasValueの処理が冗長に感じて、上記コード.gsに書き換えました

コード2.gs
var objs = [
  {"en": "Aries", "ja": "おひつじ座"},
  {"en": "Taurus", "ja": "おうし座"},
  {"en": "Gemini", "ja": "ふたご座"},
  {"en": "Cancer", "ja": "かに座"},
  {"en": "Leo", "ja": "しし座"},
  {"en": "Virgo", "ja": "おとめ座"},
  {"en": "Libra", "ja": "てんびん座"},
  {"en": "Scorpius", "ja": "さそり座"},
  {"en": "Sagittarius", "ja": "いて座"},
  {"en": "Capriconus", "ja": "やぎ座"},
  {"en": "Aquarius", "ja": "みずがめ座"},
  {"en": "Pisces", "ja": "うお座"}
]

function myFunction() {
  var value = "Leo";
  var result = hasValue(value);
  Logger.log(result);
}

function hasValue(value) {
  var result;
  for(var i = 0; i < objs.length; i++) {
    var obj = objs[i];
    if(obj["en"] === value) {
      result = true
      return result;
    } else {
      result = false
    }
  }
  return result
}




最新の投稿

Pixel 5でSuicaが使えないときはGoogle PayでSuicaを有効にしてみる

Pixel 5への機種変でSuicaが使えない人向けに書きました。 MISSION Pixel 5でSuicaを使えるようにする SOLUTION 旧端末で機種変更の設定を行う NFCをオンにする Google PayでSuicaを有効にする PROBLEMS 以前...