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 | Edge | Opera | Safari |
---|---|---|---|---|---|---|
Support simple | 41 | 40 (40) | Pas de support | 14393+ | 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.