以下のようなオブジェクトのプロパティ名 ja 中で「う」と「お」の両方含む値を取得したい
コード.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() { var values = ['う', 'お']; pattern = getAndPattern(values); 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["ja"]); 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; } function getAndPattern(values) { var pattern = '^'; for(var i = 0; i < values.length; i++) { pattern += '(?=.*' + values[i] + ')'; } return pattern; } |
実行結果
[[Taurus, おうし座], [Pisces, うお座]]
関連記事
オブジェクトの中から条件に一致する要素を抜き出す(filter)(正規表現を使う)
正規表現でAND検索を試してみる2