2012-09-14 5 views
3

Je ne comprends vraiment pas comment fonctionne lastIndexOf. Je n'ai pas pu obtenir l'utilisation du second paramètre optionnel.lastIndexOf Confusion

string.lastIndexOf (searchValue, commencer)

searchValue -> Obligatoire. La chaîne à rechercher

démarrer -> Facultatif. La position où commencer la recherche. En cas d'omission, la valeur par défaut est la longueur de la chaîne

var test = "mississippi"; 

test.lastIndexOf("ss",1) // return -1 
test.lastIndexOf("ss",2) // returns 2 
test.lastIndexOf("ss",5) // returns 5 

Quelqu'un pourrait-il me dire l'étape d'idée par étape? Pourquoi le premier renvoie -1 et le second renvoie 2 par exemple?

TIA

Répondre

5

C'est parce que c'est l'indice de départ. -1 signifie pas trouvé.

m 0 
i 1 
s 2 
s 3 
i 4 
s 5 
s 6 
i 7 
p 8 
p 9 
i 10 

Donc à partir de 1 et je ne vois pas de correspondance. Mais avec 2, je vois s puis s à 3.

MDN explains bien.

+1

Pour élaborer, c'est le point de départ de la recherche, et la recherche est effectuée à rebours. Si l'argument est '1', seuls les deux premiers caractères de la chaîne sont recherchés. Si c'est «5», tous les caractères jusqu'au sixième (inclus et à partir de 1) sont recherchés. –

+0

ok. Ensuite, je cherche 'ss' et je lui donne 5 comme deuxième paramètre. Pourquoi cela me donne 5 à la suite. Parce que le second est le sixième caractère. Ne devrait-il pas chercher jusqu'à 5 –

+0

@Ryu, non, le second 's' a * index * 6. C'est le septième caractère de la chaîne, en supposant que vous comptez à partir de 1. La fonction renvoie' 5' car elle commence à chercher à l'index '5' (le premier' s') et voit 'ss' de cette position (le reste de la chaîne compte). –

-1

La méthode lastIndexOf() obtient le dernier index d'une chaîne de recherche dans la chaîne principale. Il faut un paramètre en entrée une chaîne de recherche.

Renvoie la dernière position (index) de la chaîne de recherche. Si la chaîne de recherche ne peut pas être trouvée, elle renverra "-1". Visitez http://skillcram.com/JS.htm par exemple