2012-09-27 2 views
146

문자열 배열과 문자열이 하나 있습니다. 이 문자열을 배열 값과 비교하여 테스트하고 결과에 조건을 적용하고 싶습니다. 배열에 문자열 "A"가 포함되어 있으면 "B"를 수행하십시오.문자열 배열에 JavaScript에서 하나의 문자열이 포함되어 있는지 확인하는 방법은 무엇입니까?

어떻게하면됩니까?

+1

를 체크 아웃 : http://stackoverflow.com/questions/237104/array -containsobj-in-javascript –

+1

indexOf [MDN Docs] (https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Array/indexOf) – epascarello

+0

배열을 반복하여 하나씩 비교하십시오! – SachinGutte

답변

277

이 배열의 요소의 인덱스를 반환합니다 (아래 인터넷 익스플로러 8을 제외한) 모든 배열이 indexOf 방법, 또는 -1 배열에없는 경우 :

if (yourArray.indexOf("someString") > -1) { 
    //In the array! 
} else { 
    //Not in the array 
} 

이전 IE 브라우저를 지원해야하는 경우 the MDN article의 코드를 사용하여이 메소드를 polyfill 할 수 있습니다.

4

이 당신을 위해 그것을 할 것입니다 :

function inArray(needle, haystack) { 
    var length = haystack.length; 
    for(var i = 0; i < length; i++) { 
     if(haystack[i] == needle) 
      return true; 
    } 
    return false; 
} 

내가 스택 오버플로 질문 JavaScript equivalent of PHP's in_array()에서 발견했다. 다음과 같은 결과를

Array.prototype.contains = function(element){ 
    return this.indexOf(element) > -1; 
}; 

:

["A", "B", "C"].contains("A")true

동일

+3

그리고 여러분은 현대의 브라우저가 지원하는 indexOf를 재발 명했습니다. – epascarello

+7

... IE9 이전에는 IE에서 지원하지 않습니다. 많은 사람들이 포함되어 있습니다. IE8 (그리고 슬프게도 IE7은 대부분의 시간)을 위해 개발해야합니다. 틀림없이 indexOf 함수를 만드는 프로토 타입 메서드는 게시 한 내용에 대한 바람직한 해결책입니다. – ollie

15
var stringArray = ["String1", "String2", "String3"]; 

return (stringArray.indexOf(searchStr) > -1) 
40

이 같은 방법 contains와 Array 클래스를 "확장"는 indexOf 방법을 사용할 수 있습니다 ["A", "B", "C"].contains("D")false

와 같습니다.
+0

좋은 답변이지만 indexOf를 사용할 때 이전 IE 버전에 대한 호환성 문제를 언급 할 가치가 있습니다. –

+11

아무도 신경 쓰지 않습니다. 심지어 마이크로 소프트도 있습니다 : D – andygoestohollywood

+0

@andygoestohollywood 슬프게도 일부 회사는 여전히 IE를 사용합니다. 일부 기업이 석기 시대에 있다고해서 그것이 시장의 9 %를 덤프해야한다는 것을 의미하지는 않습니다. –

8

이 함수 프로토 타입을 만들기 :

Array.prototype.contains = function (needle) { 
    for (i in this) { 
     if (this[i] == needle) return true; 
    } 
    return false; 
} 

을 한 다음 배열에서 검색하는 코드를 사용할 수 있습니다 X

if (x.contains('searchedString')) { 
    // do a 
} 
else 
{ 
     // do b 
} 
+1

[왜 "for ... in"을 사용하여 배열 반복과 같은 나쁜 생각입니까?] (https://stackoverflow.com/questions/500504/why-is-using- for-in-with-array-iteration 같은 나쁜 아이디어) – Bergi

관련 문제