2013-11-26 2 views
1

학습은 : 전체 스크립트를 게시하지 않고자바 스크립트 : 문자열의 값과 일치시키기 위해 indexOf()를 사용하는 이유는 무엇입니까? 이런 식으로 뭔가 건너 온 자바 스크립트와

if (obj.indexOf("someValue") > -1) { 
    do.something(); 
} 

는 같이 IndexOf() 메소드는 문자열의 값을 확인하는 데 사용되는했다.

if (obj.match(/someValue/g)) { 
    do.something(); 
} 

가 기존 브라우저 지원이 아니면 더 빨리 어떤 이유로입니다 : 당신이 할 것 대신에 왜

내 질문은?

+0

정규 표현식이 느리기 때문에. – bjb568

+1

성능이 문제 일 수 있습니다. http://jsperf.com/regexp-test-search-vs-indexof/12 – Krumelur

답변

2

나는 이유는 정규식 match() 당신은 here을 확인할 수 있습니다 참으로보다 느린 indexOf

이라고 생각합니다. 코드 만 위의 사이트에서

:

<script> 
    var str = "hello world!"; 
</script> 
촬영 시간은 ± 3.05 %, 55 % 느린 일치를 사용

5,616,069 옵스/초

사용

12306269 본부/초 indexOf() 촬영 시간은 ± 2.51 %입니다. 가장 빠른

1

match()은 정규식을 사용합니다. 정규식은 indexOf()보다 느립니다.

0

일반적으로 말하면 정말 맛이 더 좋습니다. indexOf가 약간 더 빠르다고 주장 할 수도 있습니다.

0

음, indexOf()은 간단한 문자열 검색이고 obj.match()은 regExp 검색입니다. 그것은 단지 두 가지 다른 것입니다.

내가 지금 rainig인지 확인해야 할 때, 나는 TV를 켜고 일기 예보를 찾는 대신 창을 보았습니다.

피씨 : indexOf()이 첫 번째 항목 만 반환하면 사용자의 "/g"이 전역 검색을 수행합니다. 따라서 입력 문자열이 길어질수록 indexOf()은 (obj.match()과 비교하여) 더 빠릅니다.