タイトルで表現するのが難しいのですが
以下のような複数のオブジェクトを含む配列があって
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
最初に思いついた書き方
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 } |