2017-02-10 2 views
1

쉼표로 구분 된 전자 메일받는 사람 목록을 검색하는 조건 스크립트를 작성합니다. 받는 사람이 여러 명일 수 있으며 조건 스크립트는 3 개의 특정 주소를 검색합니다.indexOf()를 사용하여 변수에서 여러 값을 검색하는 효율적인 방법은 무엇입니까?

이 스크립트는 본격적인 스크립트가 아니며 조건문 만 포함 할 수 있습니다. 문제는이 필드의 글자 수 제한이 255이며 ... 도달했습니다.

여기에 현재 조건 :

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

이 우리의 글자 수 한도 - 그리고 작품 -하지만 지금 우리가 검색 할 다른 이메일 주소를 추가해야합니다. 이 상태를 단축시키는 방법이 있습니까?

+0

당신은 regexps '에를 사용할 수 없습니다 ??? 그것은 한 줄에 있어야합니까 (한 문장)? –

+2

_ 본격적인 스크립트는 아닙니다. 조건문 만 포함 할 수 있습니다 ._-이 의미가 무엇인지 구체적으로 설명 할 수 있습니까? 허용되는 것은 무엇입니까? – patstuart

답변

0

사용 some : -

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

당신이 (당신이 인터넷 익스플로러에 대해 걱정할 필요가 없습니다) ES6를 사용할 수있는 경우에, 당신은 화살표 기능을 사용할 수 있습니다 따라

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

@Bergi 덕분에 나는 그것을 잡았습니다. – patstuart

0

을 특정 전자 메일 주소의 경우 정규식 솔루션이 더 간단 할 수 있습니다.

/email_[1-3]/i.test(email.recipients) 
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));