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 -1 si le texte n’a pas été trouvé.
Modifie l’original
Non
Sur cette page

Exemple

#
JavaScript
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'))
Console
9
15
25
-1

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

#
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éfaut 0.

Plus d’exemples

#
Piège : vérifier le résultat dans un if
JavaScript
const title = 'JavaScript'

if (title.indexOf('Java')) {
  console.log('Trouvé')
} else {
  console.log('Non trouvé')
}

console.log(title.indexOf('Java') !== -1)
Console
Non trouvé
true

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().

Compter les occurrences dans une boucle
JavaScript
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)
Console
2
Découper à partir d’une position
JavaScript
const email = 'lea@example.com'
const at = email.indexOf('@')

console.log(email.slice(0, at))
console.log(email.slice(at + 1))
Console
lea
example.com

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 donne 0, 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

#

Vous voyez une erreur ou il manque un exemple ? Écrivez-nous.