2011-12-21 14 views
12

Sto imparando Javascript e non capisco il motivo per cui l'indexOf seguito restituisce -1:Perché IndexOf restituisce -1?

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

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

risposta

18

-1 significa "nessuna corrispondenza trovata".

Il motivo per cui restituisce -1 anziché "falso" è che un ago all'inizio della stringa si trova nella posizione 0, che è equivalente a false in Javascript. Quindi restituire -1 assicura che tu sappia che non c'è in realtà una corrispondenza.

+0

Questo è quello che stavo cercando. Grazie. –

8

-1 significa nessuna corrispondenza viene trovato. "buono" non è in quella frase. Questo è documentedbehaviour.

Il metodo indexOf() restituisce il primo indice in cui un dato elemento può essere trovata nella matrice, o -1 se non è presente.

7

Poiché gli array sono basati su 0, restituendo 0 significherebbe iniziare a partire dal primo carattere; 1, il secondo carattere e così via. Ciò significa che qualsiasi valore da 0 a superiore sarebbe una risposta vera o "trovata". Per mantenere tutto nella categoria intera, -1 indica che non è stata trovata alcuna corrispondenza.

1

C'è un altro motivo per indexOf per restituire -1 quando non viene trovata alcuna corrispondenza. Si consideri il seguente codice:

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

Perché ~ (-1) = 0 quindi il fatto che il ritorno indexOf -1 rende più facile scrivere if ... else utilizzando ~.

Problemi correlati