2014-06-13 6 views
1

문자열 배열에 하위 문자열을 찾을 코드가 필요합니다. 이것은 완전한 문자열을 찾을 수 있습니다 :자바 스크립트 문자열 배열에서 하위 문자열 찾기

var categories = [ "msn.com", "http://gmail.com", "word2" ]; 
found = $.inArray('http://gmail.com/example', categories); 
alert(found); // TRUE 

을하지만이 또한 사실하려면 :

var categories = [ "msn.com", "http://gmail.com", "word2" ]; 
found = $.inArray('gmail.com/example', categories); 
alert(found); // FALSE 
+3

당신은 무슨 기대? 배열에 문자열 'gmail.com/example'과 같은 항목이 없습니다. 동일한 문자열을 의미하는 것을 정의해야합니다. –

+0

'gmail.com/example'과'http : // gmail.com/'이 같은 도메인 인 경우이 경우 True를 반환하고 싶습니다. – user3537765

답변

0

텍스트를 찾는 방법으로 .grep()을 사용할 수 있습니다.

var categories = [ "msn.com", "http://gmail.com", "word2" ] 
var Item = "gmail.com"; 

var found = jQuery.grep(categories, function(value, i) {  
    return value.indexOf(Item) != -1 
}).length; 

Working Fiddle

+0

@Down Voter : 왜 여기에 downvote 말해 줄 수 있습니까? –

+0

내 downvote 아니라 어쩌면 거의 내 이전 대답 중복 : O) – vogomatix

+0

확인, 아무런 문제가 (전에 내 대답을 볼 수 없습니다 중복, 미안) :) –

1

갱신이에 :

found = $.inArray('gmail.com/example', categories) !== -1; 

Fiddle


에 따르면 문서 $.inArray()은 찾은 elem의 인덱스를 반환하고 찾지 못하면 -1을 반환합니다.

그래서 부울 값에 관심이 있다면 위와 같이 시도해 볼 수 있습니다.

+0

이것은 정확한 일치를 검색 할 것입니다. http://jsfiddle.net/ec2VB/ 그러나 OP의 필요성은 완전히 다릅니다. 나는 DV하지 않았다. –

+0

@RajaprabhuAravindasamy 그렇습니다.'.indexOf()'와 유사하지만 혼란스러운 질문처럼 보입니다 ... ?? – Jai

+0

네,하지만'gmail.com/example'을 검색하려고 할 때 ('gmail.com')가 배열에 있기 때문에 사실을 말하고 싶습니다 – user3537765

0

예를 들어, 범주 배열에없는 문자열을 찾고 있습니다. 샘플 문자열이 카테고리의 문자열보다도 큰

대신이 시도 :

// this will return the matching value... 
var categories = [ "msn.com", "http://gmail.com", "word2" ], 
    myString = "gmail.com"; 

found = $.grep(categories, function (value, i) { 
    return (value.indexOf(myString) >= 0) 
}); 
// found is non-empty array if match 
+0

예, 'http : // gmail.com'을 검색하면 false가 반환됩니다. – user3537765

+0

grep 시도 - 대답을 참조하십시오 – vogomatix

0

당신은 Array.prototype.reduce를 사용하여이 작업을 수행 할 수 ...

// this will return the matching value... 
var categories = [ "msn.com", "http://gmail.com", "word2" ], 
    myString = "gmail.com"; 


found = categories.reduce(function(previousValue, currentValue, index, array){ 
    return (previousValue >= 0) ? previousValue : (currentValue.indexOf(myString) >= 0) ? index : -1 ; 
}, -1); 

// found is index of first match