En JavaScript, ¿cuál es la diferencia entre indexOf () y search ()?

votos
145

Al ser bastante nuevo en JavaScript, no puedo discernir cuándo usar cada uno de estos.

¿Alguien puede ayudarme a aclarar esto?

Publicado el 09/12/2008 a las 21:25
fuente por usuario
En otros idiomas...                            


7 respuestas

votos
167

Si necesita una expresión regular, use search(). De lo contrario, indexOf()va a ser más rápido.

Respondida el 09/12/2008 a las 21:29
fuente por usuario

votos
28

indexOfes para subcadenas simples, searchpuede hacer expresiones regulares.

Respondida el 09/12/2008 a las 21:28
fuente por usuario

votos
12

La función de búsqueda ( una descripción aquí ) toma una expresión regular, que le permite hacer coincidir patrones más sofisticados, cadenas insensibles a mayúsculas y minúsculas, etc., mientras que indexOf ( una descripción aquí ) simplemente coincide con una cadena literal. Sin embargo, indexOf también le permite especificar un índice inicial.

Respondida el 09/12/2008 a las 21:31
fuente por usuario

votos
7

Creo que la principal diferencia es que la búsqueda acepta expresiones regulares.

Verifique esta referencia:

Respondida el 09/12/2008 a las 21:30
fuente por usuario

votos
3

IndexOf () - acepta los literales de cadena o los objetos de cadena, pero no expresiones regulares. También acepta un valor entero de base cero para comenzar su búsqueda de, por ejemplo:

  1. "Babyelephant" .indexOf ( "e"); // le da 4
  2. "Babyelephant" .indexOf ( "e", 5); // le da 6 como la búsqueda se inicia desde el 6 de posición o quinto índice.
  3. var m = / e /; "Babyelephant" .indexOf (m); // da -1, ya que duerma acepta expresiones regulares.

Buscar () - acepta ambas cadenas literales o los objetos de cadena y expresiones regulares. Pero no acepta un índice para iniciar la búsqueda de.

Respondida el 05/09/2016 a las 11:20
fuente por usuario

votos
2

La búsqueda encuentra que coincide con una expresión regular, pero no tiene desplazamientos. IndexOf usa literales para hacer coincidir, pero tiene un desplazamiento.

Índice de

Buscar

Respondida el 09/12/2008 a las 21:32
fuente por usuario

votos
0

Sin una expresión regular , no hay ninguna diferencia práctica entre indexOf y de búsqueda .

El siguiente ejemplo da una viva demostración :

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>

Respondida el 15/12/2015 a las 04:02
fuente por usuario

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more