2011-12-21 21 views
12

estoy aprendiendo Javascript y no entiendo por qué el indexOf continuación devuelve -1:¿Por qué IndexOf devuelve -1?

var string = "The quick brown fox jumps over the lazy dog"; 

console.log (string.indexOf("good")); 

Respuesta

18

-1 significa "no se encontró coincidencia".

La razón por la que devuelve -1 en lugar de "falso" es que una aguja al comienzo de la cadena estaría en la posición 0, que es equivalente a falso en Javascript. Así que devolver -1 asegura que sabes que no hay realmente una coincidencia.

+0

Eso es lo que estaba buscando. Gracias. –

8

-1 significa que se encuentra ninguna coincidencia. "bueno" no está en esa oración. Esto es documentedbehaviour.

El método indexOf() devuelve el primer índice en el cual un elemento dado se puede encontrar en la matriz, o -1 si no está presente.

7

Dado que las matrices están basadas en 0, devolver 0 significaría que comenzar desde el primer carácter coincidió; 1, el segundo personaje, y así sucesivamente. Esto significa que cualquier cosa de 0 en adelante sería una respuesta verdadera o "encontrada". Para mantener todo en la categoría entera, -1 significa que no se encontró coincidencia.

1

Hay otro motivo para que indexOf devuelva -1 cuando no se encuentra ninguna coincidencia. Consideremos a continuación el código:

if (~str.indexOf(pattern)){ 
    console.log('found') 
}else{ 
    console.log('not found') 
} 

Debido a ~ (-1) = 0 por lo que el hecho de que indexOf devolviendo -1 hace que sea más fácil de escribir if ... else usando ~.

Cuestiones relacionadas