String. prototype. indexOf()
Renvoie l’indice de la première occurrence du texte donné dans une chaîne, ou -1 s’il est absent.
- Renvoie
- L’indice de la première occurrence (compté depuis
0), ou-1si le texte n’a pas été trouvé. - Modifie l’original
- Non
Exemple
#const text = 'Apprends HTML, puis CSS, puis JavaScript'
console.log(text.indexOf('HTML'))
console.log(text.indexOf('puis'))
console.log(text.lastIndexOf('puis'))
console.log(text.indexOf('Python'))Définition et utilisation
#La méthode indexOf() cherche un fragment de texte et renvoie la position de son premier caractère. Les indices commencent à 0. Quand le fragment n’est pas présent dans la chaîne, le résultat est -1 ; comparez donc le résultat à -1 plutôt que de le traiter comme un booléen.
Le second argument indique l’indice à partir duquel commence la recherche, ce qui permet de trouver des occurrences successives dans une boucle. La méthode sœur lastIndexOf() parcourt le texte depuis la fin et renvoie la position de la dernière occurrence.
Quand vous n’avez besoin que d’une réponse oui ou non, includes() est plus lisible. indexOf() est utile quand la position elle-même sert ensuite, par exemple pour découper un fragment avec slice().
Syntaxe
#string.indexOf(searchString)
string.indexOf(searchString, position)
string.lastIndexOf(searchString)Paramètres
#searchString
string
Texte recherché. La casse a de l’importance.position
number, optionnel
Indice à partir duquel commence la recherche. Par défaut0.
Plus d’exemples
#const title = 'JavaScript'
if (title.indexOf('Java')) {
console.log('Trouvé')
} else {
console.log('Non trouvé')
}
console.log(title.indexOf('Java') !== -1)indexOf() a renvoyé 0, et zéro est une valeur fausse, donc la condition est tombée dans le else. Comparez toujours le résultat à -1, ou utilisez includes().
const log = 'ok, erreur, ok, ok, erreur'
let count = 0
let position = log.indexOf('erreur')
while (position !== -1) {
count++
position = log.indexOf('erreur', position + 1)
}
console.log(count)const email = 'lea@example.com'
const at = email.indexOf('@')
console.log(email.slice(0, at))
console.log(email.slice(at + 1))Compatibilité des navigateurs
#Largement disponible
Fonctionne dans tous les navigateurs modernes, y compris sur mobile. Vous pouvez l’utiliser sans crainte.
- Chrome
- Edge
- Firefox
- Safari
Bonnes pratiques
#- Ne vérifiez jamais le résultat avec
if (text.indexOf(x)). Un fragment trouvé tout au début donne0, qui est une valeur fausse. Comparez-le à-1. - La méthode distingue majuscules et minuscules. Pour chercher sans cette distinction, convertissez les deux chaînes en minuscules.
Entrées associées
#- String.prototype.includes()Vérifie si une chaîne contient le fragment de texte donné. Renvoie true ou false et distingue majuscules et minuscules.
- String.prototype.slice()Renvoie un fragment de la chaîne entre un indice de départ et un indice de fin (exclu). Prend en charge les indices négatifs.
- String.prototype.match()Fait correspondre une chaîne à une expression régulière. Renvoie un tableau avec la correspondance, toutes les correspondances, ou null.
- String.prototype.at()Renvoie le caractère à l’indice donné. Les indices négatifs se comptent depuis la fin, donc at(-1) est le dernier caractère.
- Array.prototype.indexOf()Renvoie l’indice de la première occurrence d’une valeur, ou -1.
- String.prototype.lastIndexOf()Renvoie l’indice de la dernière occurrence du texte donné dans une chaîne, ou -1 s’il est absent.
Vous voyez une erreur ou il manque un exemple ? Écrivez-nous.