LANG SELRCT

コードを書く場所についてはこちら

2018年1月14日日曜日

オブジェクトの中から条件に一致する要素を抜き出す(filter)(正規表現を使う)


12星座の英語名と日本語名のオブジェクトの中から
英語名に us を含むものだけを抜き出して
新たな配列を作る


コード.gsを実行すると以下のようなログが出ます




コード.gs
var obj = [
  {"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": "うお座"}
]

var pattern;
function filter_obj() {
  pattern = "us";
  var filtered = obj.filter(judge);
  var result = get_result(filtered);
  Logger.log(result);
}

function judge(items) {
  var regexp = new RegExp(pattern);
  var judged = regexp.test(items["en"]);
  return judged;
}

function get_result(filtered) {
  var result = [];
  for (var i = 0; i < filtered.length; i++) {
    result.push([filtered[i]["en"], filtered[i]["ja"]]);
  }
  return result;
}
意訳
星座名を英語と日本語のオブジェクトにして用意しておく














patternの入れ物を用意しておく
この機能がやること
patternを決める(この例では us を)
signsの中身をjudgeで処理した結果を取得して
get_resultに渡して
ログに出す


この機能がやること
patternで正規表現を作って
obj["en"]の要素の中で正規表現に一致すれば
返す


この機能がやること
resultの入れ物を作って
受け取ったfilteredの数だけ繰り返す
enとjaのセットをそれぞれresultに追加する

最終的なresultを返す



参考

JavaScript test() Method
https://www.w3schools.com/jsref/jsref_regexp_test.asp

JavaScript Array filter() Method
https://www.w3schools.com/jsref/jsref_filter.asp