javascript - 함수 - 자바스크립트 배열 indexof




JavaScript에서는 indexOf()와 search()의 차이점은 무엇입니까? (5)

자바 스크립트에 익숙하지 않아서, 각각을 언제 사용해야 하는지를 구분할 수 없습니다.

아무도 나를 위해 명확하게 도울 수 있습니까?


IndexOf () - 문자열 리터럴 또는 문자열 객체를 허용하지만 정규 표현식은 허용 하지 않습니다 . 또한 검색을 시작할 0부터 시작하는 정수 값을 허용합니다 (예 :

  1. "babyelephant".indexOf ( "e"); // 당신에게 4를 준다.
  2. "babyelephant".indexOf ( "e", 5); // 6 번째 위치 또는 5 번째 인덱스에서 검색을 시작할 때 6을줍니다.
  3. var m = / e /; "babyelephant".indexOf (m); // 정규 표현식을 허용하지 않으므로 -1을 반환합니다.

Search () - 문자열 리터럴 또는 문자열 객체와 정규식을 모두 허용합니다. 그러나 검색을 시작하기위한 색인을 허용하지 않습니다.


search 함수 ( 여기에서 한 가지 설명 )는 정규 표현식을 사용하여보다 정교한 패턴, 대소 문자를 구별하지 않는 문자열 등과 비교할 수 있습니다. 반면 indexOf ( 여기서 한 가지 설명 )는 단순히 리터럴 문자열과 일치합니다. 그러나 indexOf를 사용하여 시작 색인을 지정할 수도 있습니다.


검색은 정규 표현식과 일치하지만 오프셋이 없음을 찾습니다. IndexOf는 리터럴을 사용하여 일치하지만 오프셋을 갖습니다.

IndexOf

수색


regex 가 없으면 indexOfsearch 사이에 실제적인 차이가 없습니다.

아래 예제는 라이브 demo 를 제공합니다.

function FromSearch() {

  var str = document.getElementById("demo").innerText;
  var n = str.search("difference");
  document.getElementById("Location").innerHTML = n;
}

function FromindexOf() {
  var str = document.getElementById("demo").innerText;
  var n = str.indexOf("difference");
  document.getElementById("Location").innerHTML = n;
}
<p id="demo">Without a <a href='http://www.w3schools.com/js/js_regexp.asp'>regex</a>, there is no practical difference between <a href='http://www.w3schools.com/jsref/jsref_indexof.asp'>indexOf</a> and <a href='http://www.w3schools.com/jsref/jsref_search.asp'>search</a>
</p>

<button onclick="FromSearch()">From search</button>

<button onclick="FromindexOf()">From indexOf</button>

<p>Location of difference in the above sentence is:</p>

<mark id="Location"></mark>


정규식이 필요한 경우 search() . 그렇지 않으면 indexOf() 가 더 빨라질 것입니다.





string