2012-10-08 4 views
17

가능한 중복 :
array.contains(obj) in JavaScript문자열을 여러 값과 비교하는 방법은 무엇입니까?

뭔가 같은 :

if (mystring == "a" || mystring == "b" || mystring =="c") 

내가 할 호핑되었습니다

if (mystring in ("a", "b", "c")) 

은 가능할까요?

+3

에 대한 심을 포함 당신은 할당과 비교되지 않습니다. – epascarello

+0

사실, 오타였습니다. 덕분에 – Diego

+0

Im @ DanielA.White 배열에 대해 얘기하지, 내가 하나의 문자열을 추가 할 수 있지만, 그것을 할 수있는 방법이 있다고 믿는다. – Diego

답변

18

당신은 ES7은이

if ([ 'a', 'b', 'c' ].indexOf(mystring) > -1) { ... } 

편집 같은 indexOf()를 사용할 수있는 약간의 단순화 온다. 오늘 바로 크롬 47+와 FF의로 지원하는 것 43+ :

if ([ 'a', 'b', 'c' ].includes(mystring)) { ... } 
+0

감사합니다. 가장 간단한 방법 인 것 같습니다. – Diego

+0

감사합니다. 미스터 SIrko –

1

당신은 그래서 indexOf

[1,2,3].indexOf(1) will give 0 
[1,2,3].indexOf(4) will give -1 

을 사용할 수 있습니다, 당신이 같이 IndexOf 경우 확인하실 수 있습니다 -1을 반환합니다.

문자열과 유사합니다. 작동 할 수

foreach (str in strings) { 
    if (mystring.contains(str)) { 
     ... 
    } 
} 

같은

0

뭔가. 같이 IndexOf를 사용

+0

포함 된? 함수가 아닙니다. –

5

그러나 나이가 정보 요소 (그래서 당신이 그것을 시뮬레이션 사용자 정의 코드를 사용하는 것, 아니면 그냥 직진에는 .indexOf 기능이 없다 것을 명심해야 마음에 오는 제일 먼저 jQuery.inArray 또는 underscore.js indexOf과 같은 것으로).

if ([ 'a', 'b', 'c' ].indexOf(mystring) > -1) { ... } 

사이드 참고 : jQuery를 소스에 inArray의 정의를 찾고 자신 같이 IndexOf 교체를 작성하여 볼 수있는 매우 간단합니다. 그래서 내가 말했듯이 - 당신 자신의 메서드를 작성하고, 다른 라이브러리에서 복사하여 붙여 넣거나, 모든 브라우저에서 indexOf를 사용할 수 있기를 원한다면 그 라이브러리를 사용하십시오.

+0

인터넷 익스플로러의 머리를 +1 해주면 – Diego

0

귀하의 버전은 3 개의 문자 중 가장 빠른 것으로 가장 읽기 쉽습니다.

var c; 
if (s.length==1 && (c=s.charAt(0))>='a' && c<='c') { 

을하지만 그 재미를 위해 주로이다 ... : 조금 더 가능한 값으로

, 당신은이 같은 것을 사용할 수 있습니다

1

그것은 단지 버전 9 또는 이상 작동합니다 :

if (["a", "b", "c"].indexOf(mystring) != -1) { 
    // do something 
} 
1
if (["a", "b", "c"].indexOf(mystring) != -1) {} 

이 그러나 그것은 일부 브라우저에서 작동하지 않을 수있는 가장 좋은 방법이 될 것입니다.

0

는 Addtionally은 : 이전 버전의 브라우저를 들어

String.prototype.in = function(){ 
    return ~[].slice.call(arguments).indexOf(this.valueOf()) ? true : false; 
} 
//usage 
var myStr = 'a'; 
myStr.in('a','b','c'); //=> true 
'd'.in('a','b','c'); //=> false 

: 당신은 비교를 위해 문자열 확장을 만들 수이 MDN page는 귀하의 예를 잘못 Array.indexOf

관련 문제