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




substring value (7)

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>

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 ricerca trova le corrispondenze con un'espressione regolare, ma non ha compensazioni. IndexOf utilizza letterali per la corrispondenza, ma ha un offset.

Indice di

Ricerca


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


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.


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

Controlla questo riferimento:


indexOf è per sottostringhe semplici, la search può eseguire espressioni regolari.


La modalità "strict" di JavaScript viene introdotta in ECMAScript 5.

  (function() {
  "use strict";
   your code...
   })();

scrivere "usare rigorosamente"; all'inizio del tuo file JS attiva il controllo rigoroso della sintassi. Svolge i seguenti compiti per noi:

(i) mostra un errore se si tenta di assegnare a una variabile non dichiarata

(ii) ti impedisce di sovrascrivere le librerie di sistema JS chiave

(ii) proibisce alcune caratteristiche linguistiche non sicure o soggette a errori

"use strict" funziona anche all'interno delle singole funzioni. È sempre una buona pratica includere "usa rigorosamente il tuo codice.

Problema di compatibilità del browser: le direttive "uso" sono pensate per essere compatibili con le versioni precedenti. I browser che non li supportano vedranno solo un letterale String che non viene ulteriormente referenziato. Quindi lo passeranno sopra e andranno avanti.





javascript string