以下のようなオブジェクトのプロパティ名 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