String.prototype.includes()

La méthode includes() détermine si une chaîne de caractères est contenue dans une autre et renvoie true ou false selon le cas de figure.

Syntaxe

str.includes(chaîneRecherchée [, position]);

Paramètres

chaîneRecherchée
Une chaîne à rechercher dans la chaîne courante.
position
Paramètre optionnel. La position dans la chaîne à partir de laquelle commencera la recherche. La valeur par défaut de position est 0.

Valeur de retour

true si la chaîne de caractères contient la sous-chaîne recherchée, false sinon.

Description

Cette méthode détermine si une chaîne de caractères est contenue dans une autre.

includes() est sensible à la casse et on aura donc :

'Baleine bleue'.includes('baleine'); // false

Exemples

Utiliser includes()

var str = "Être ou ne pas être, telle est la question.";

console.log(str.includes("Être"));       // true
console.log(str.includes("question"));   // true
console.log(str.includes("pléonasme"));  // false
console.log(str.includes("Être", 1));    // false
console.log(str.includes("ÊTRE"));       // false

Prothèse d'émulation (polyfill)

Cette méthode a été ajoutée avec la spécification ECMAScript 6 et peut ne pas être disponible dans toutes les implémentations de JavaScript. On peut prévenir à cette éventualité en utilisant le fragment de code suivant :

if ( !String.prototype.includes ) {
  String.prototype.includes = function(search, start) {
    'use strict';
    if (typeof start !== 'number') {
      start = 0;
    } 

    if (start + search.length > this.length) {
      return false;
    } else {
      return this.indexOf(search,start) !== -1;
    }
  };
}

Spécifications

Spécification État Commentaires
ECMAScript 2015 (6th Edition, ECMA-262)
La définition de 'String.prototype.includes' dans cette spécification.
Standard Définition initiale.
ECMAScript 2017 Draft (ECMA-262)
La définition de 'String.prototype.includes' dans cette spécification.
Projet  

Compatibilité du navigateur

Fonctionnalité Chrome Firefox (Gecko) Internet Explorer Opera Safari
Support simple 41 40 (40) Pas de support Pas de support 9
Fonctionnalité Android Chrome pour Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
Support simple Pas de support Pas de support 40.0 (40) Pas de support Pas de support Pas de support

String.prototype.contains

Les versions de Firefox allant de Firefox 18 à Firefox 39 utilisent cette méthode avec le nom contains. Cette méthode a été renommée en includes via bug 1102219 pour la raison suivante :

Il a été rapporté que certains sites web utilisant MooTools 1.2 plantaient sur Firefox 17. Cette version de MooTools vérifie que String.prototype.contains() existe bien, et si ce n'est pas le cas, ajoute sa propre fonction similaire. Avec l'introduction de cette fonction dans Firefox 17, le comportement de ce contrôle a changé de telle manière qu'il cause un plantage du code de MooTools implémenté pour String.prototype.contains(). En conséquence, cette implémentation a été désactivée de Firefox 17. String.prototype.contains() est ainsi disponible sur une version ultérieure : Firefox 18 lorsque MooTools a déclenché la sortie de la version 1.2.6.

MooTools 1.3 force sa propre version de String.prototype.includes(), les sites Web l'implémentant ne sont donc pas perturbés. Néanmoins, il faut noter que les signatures des méthodes diffèrent entre MooTools 1.3 et ECMAScript 6 (pour le second paramètre). MooTools 1.5+ a modifié sa signature afin de prendre en compte le standard de ES6.

Dans Firefox 48, la méthode String.prototype.contains() a été retirée. String.prototype.includes() doit être utilisée à la place.

Voir aussi

Étiquettes et contributeurs liés au document

 Contributeurs à cette page : SphinxKnight, P45QU10U, tregagnon, miam
 Dernière mise à jour par : SphinxKnight,