在应用脚本中,我有一个看起来像这样的对象:
message_objs.push({
'body': message.getPlainBody(),
'date' : message.getDate(),
'from' : message.getFrom(),
'to' : message.getTo()
})
我正在从收件箱中收到的电子邮件中构建
我想按发件人的域过滤电子邮件,所以我可以这样做:
var substring = 'yahoo';
var filtered = message_objs.filter(function (obj) {
return obj['from'].indexOf(substring)>-1;
});
用于单个子字符串,但实际上我想拥有一组允许的域,例如
var substrings = ['yahoo', 'gmail' ... ];
在应用脚本中或使用ES5工具执行此操作的最佳方法是什么?
答案 0 :(得分:1)
您可以使用Array#some
来检查字符串中包含的任何内容,并使用String#includes
来检查子字符串的存在。
var substrings = ['yahoo', 'gmail' ]
var filtered = message_objs.filter(function (obj) {
return substring.some( sub => obj['from'].includes(sub) );
});
对于具有其他Array#filter
方法的旧版浏览器。
var substrings = ['yahoo', 'gmail' ]
var filtered = message_objs.filter(function (obj) {
return substring.filter(function(sub){
obj['from'].indexOf(sub) > -1;
}).length;
});
答案 1 :(得分:1)
您可以使用Javascript includes
方法。
var substrings = ['yahoo', 'gmail' ... ];
var filtered = message_objs.filter(function (obj) {
return substrings.includes(obj['from']);
});
答案 2 :(得分:1)
请将此示例脚本视为几个答案之一。在此示例中,我使用some()
来检查substrings
中是否包含message_objs
的值。
var message_objs = [
{from: "sample1@sample.com"},
{from: "sample2@yahoo.com"},
{from: "sample3@gmail.com"},
];
var substrings = ['yahoo', 'gmail'];
var filtered = message_objs.filter(function(obj) {
return substrings.some(function(e) {return obj['from'].indexOf(e) > -1});
});
console.log(filtered);