Le but de indexOf est de trouver la position d'un mot dans une chaîne
lastIndexOf est également une recherche de mots. La différence entre eux est que le premier commence au début de la chaîne et le second à la fin de la chaîne.
Une fois le mot spécifié trouvé, le numéro de position actuel du mot sera renvoyé. S'il n'est pas trouvé, renvoyez -1.
var str = "//www.stooges.com.my/test/index.aspx123/"; console.log(str.indexOf("/")); //0 console.log(str.lastIndexOf("/")); //39
Le paramètre 1 est le mot à rechercher, il doit être str, l'expression régulière ne fonctionnera pas.
Il accepte également le 2ème paramètre. Type de numéro, cela nous permet de préciser la plage de recherche.
var str = "//www.stooges.com.my/test/index.aspx123/"; console.log(str.indexOf("/", 0)); //0 默认情况是 0 console.log(str.lastIndexOf("/", str.length)); //39 默认情况是 str.length
Le contrôle des deux méthodes va dans des directions différentes.
Supposons que indexOf est défini sur 10, alors la plage de recherche est de 10 à str.length (fin du caractère)
Si lastIndexOf est défini sur 10, la plage de recherche sera de 10 à 0 (préfixe)
Vous devriez faire attention à cela.
ps : S'il est réglé sur un nombre négatif tel que -500, il y aura des phénomènes étranges que je ne peux pas comprendre moi-même = = " ;
Parfois, nous voulons spécifier le nième. Ensuite, nous pouvons y parvenir grâce à la méthode ci-dessus.
Par exemple :
String.prototype.myIndexOf = function (searchValue, startIndex) { var text = this; startIndex = startIndex || 1; var is_negative = startIndex < 0; var ipos = (is_negative) ? text.length + 1 : 0 - 1; var loopTime = Math.abs(startIndex); for (var i = 0; i < loopTime ; i++) { ipos = (is_negative) ? text.lastIndexOf(searchValue, ipos - 1) : text.indexOf(searchValue, ipos + 1); if (ipos == -1) break; } return ipos; }
var str = "//www.stooges.com.my/test/index.aspx123/"; console.log(str.myIndexOf("/", 3)); //20 console.log(str.myIndexOf("/", -2)); //25 倒数第2个的位置