This is an experimental technology, part of the Harmony (ECMAScript 6) proposal.
Because this technology's specification has not stabilized, check the compatibility table for usage in various browsers. Also note that the syntax and behavior of an experimental technology is subject to change in future version of browsers as the spec changes.
Summary
The includes() method determines whether one string may be found within another string, returning true or false as appropriate.
Syntax
str.includes(searchString[, position])
Parameters
-
searchString - A string to be searched for within this string.
-
position -
Optional. The position in this string at which to begin searching for
searchString; defaults to 0.
Description
This method lets you determine whether or not a string includes another string.
Examples
Example: Using includes()
var str = 'To be, or not to be, that is the question.';
console.log(str.includes('To be')); // true
console.log(str.includes('question')); // true
console.log(str.includes('nonexistent')); // false
console.log(str.includes('To be', 1)); // false
console.log(str.includes('TO BE')); // false
Polyfill
This method has been added to the ECMAScript 6 specification and may not be available in all JavaScript implementations yet. However, you can easily polyfill this method:
if (!String.prototype.includes) {
String.prototype.includes = function() {
return String.prototype.indexOf.apply(this, arguments) !== -1;
};
}
Specifications
| Specification | Status | Comment |
|---|---|---|
| ECMAScript 6 (ECMA-262) The definition of 'String.prototype.includes' in that specification. |
Draft | Initial definition. |
Browser compatibility
| Feature | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari |
|---|---|---|---|---|---|
| Basic support | 41 | Unknown (?) | Not supported | Not supported | Not supported |
| Feature | Android | Chrome for Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
|---|---|---|---|---|---|---|
| Basic support | Not supported | Not supported | ?.0 (?) | Not supported | Not supported | Not supported |
String.prototype.contains
In Firefox 18 - 36, the name of this method was called "contains". It was renamed to "includes" in bug 1102219 due to the following reason:
It's been reported that some Web sites using MooTools 1.2 broke on Firefox 17. This version of MooTools checks whether String.prototype.contains() exists and, if it doesn't, adds its own. With the introduction of this function in Firefox 17, the behavior of that check changed in a way that causes code based on MooTools' String.prototype.contains() implementation to break. As a result, this change was disabled in Firefox 17. String.prototype.contains() is available one version later, Firefox 18.
MooTools 1.3 forces its own version of String.prototype.contains(), so Web sites relying on it should not break. However, you should note that MooTools 1.3 signature and ECMAScript 6 signatures for this method differ (on the second argument). MooTools 1.5+ changed the signature to match the ES6 standard.