使用indexOf()在变量中搜索多个值的有效方法?

时间:2017-02-10 15:21:38

标签: javascript conditional indexof

我正在构建一个条件脚本,用于搜索以逗号分隔的电子邮件收件人列表。可以有多个收件人,条件脚本搜索三(3)个特定地址。

这不是一个完整的脚本 - 它只能包含一个条件语句。我们的问题是这个字段的字符数限制为255 ......我们已达到它。

目前的情况如下:

email.recipients.toLowerCase().indexOf('email_1') >= 0 || email.recipients.toLowerCase().indexOf('email_2') >= 0 || email.recipients.toLowerCase().indexOf('email_3') >= 0

这符合我们的字符限制 - 并且有效 - 但现在我们需要添加另一个电子邮件地址来搜索。有没有办法缩短这种状况?

4 个答案:

答案 0 :(得分:1)

如果您可以使用ES6(您不必担心Internet Explorer),可以使用箭头功能:

['email_1','email_2','email_3'].some(e=>email.recipients.toLowerCase().indexOf(e)+1);

答案 1 :(得分:0)

使用some: -

['email_1', 'email_2', 'email_3'].some(function(e) {
  return email.recipients.toLowerCase().indexOf(e) >= 0;
});

答案 2 :(得分:0)

根据特定的电子邮件地址,正则表达式解决方案可能更简单:

/email_[1-3]/i.test(email.recipients)

答案 3 :(得分:0)

当然不是完美的答案,但你可以使用别名缩短一点(注意var冲突,因为你不能在这个表达式中使用var关键字,这意味着var将是全局的,它也可能无法在严格的模式下工作,我认为。)

刚刚回答,因为评论太长了。希望迭代帮助。

var email = {}; email.recipients = 'email_1,email_2,email_3';
console.log((a = email.recipients.toLowerCase()) && (a.indexOf('email_1') >= 0 || a.indexOf('email_2') >= 0 || a.indexOf('email_3') >= 0));