array - In JavaScript, qual è la differenza tra indexOf() e search()?



substring javascript (5)

IndexOf () - accetta letterali stringa o oggetti stringa ma non espressioni regolari. Accetta anche un valore intero a base zero per iniziare la sua ricerca, ad esempio:

  1. "Babyelephant" .indexOf ( "e"); // ti dà 4
  2. "Babyelephant" .indexOf ( "E", 5); // ti dà 6 mentre la ricerca inizia dalla 6a posizione o 5o indice.
  3. var m = / e /; "Babyelephant" .indexOf (m); // dà -1 poiché non accetta le espressioni regolari.

Cerca () - accetta sia letterali stringa o oggetti stringa ed espressioni regolari. Ma non accetta un indice per iniziare la ricerca.

https://code.i-harness.com

Essendo abbastanza nuovo per JavaScript, non sono in grado di discernere quando utilizzare ciascuno di questi.

Qualcuno può aiutarmi a chiarire questo per me?


La funzione di ricerca ( una descrizione qui ) prende un'espressione regolare, che consente di confrontarla con pattern più sofisticati, stringhe maiuscole e minuscole, ecc., Mentre indexOf ( una descrizione qui ) corrisponde semplicemente a una stringa letterale. Tuttavia, indexOf consente anche di specificare un indice iniziale.


Penso che la differenza principale sia che la ricerca accetta espressioni regolari.

Controlla questo riferimento:


Senza una regex , non c'è alcuna differenza pratica tra indexOf e search .

L'esempio seguente mostra una demo dal vivo:

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>


Se hai bisogno di un'espressione regolare, usa search() . Altrimenti indexOf() sarà più veloce.





string