String.prototype.includes()

includes() メソッドは、1 つの文字列を別の文字列の中に見出すことができるかどうかを判断し、必要に応じて truefalse を返します。

構文

str.includes(searchString[, position])

引数

searchString
この String 内で検索される文字列。
position Optional
任意。searchString を検索し始めるこの String 内の位置。デフォルトは 0 です。

返値

文字列が検索値を含む場合、true。含まなければ、false

解説

このメソッドによってある文字列内に別の文字列を含んでいるかどうか判断できます。

大文字・小文字の区別

includes() メソッドは大文字と小文字が区別します。例えば、次のコードでは false を返します:

'Blue Whale'.includes('blue'); // returns false

includes()を使う

const 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

ポリフィル

このメソッドは ECMAScript 2015 で追加されました。まだ、すべての JavaScript の実装で利用できるとは限りません。しかしながら、このメソッドを簡単にエミュレートできます:

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;
    }
  };
}

仕様書

仕様書 状態 備考
ECMAScript Latest Draft (ECMA-262)
String.prototype.slice の定義
ドラフト
ECMAScript 2015 (6th Edition, ECMA-262)
String.prototype.includes の定義
標準 初回定義

ブラウザーの互換性

Update compatibility data on GitHub
デスクトップモバイルサーバー
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewAndroid 版 ChromeAndroid 版 FirefoxAndroid 版 OperaiOSのSafariSamsung InternetNode.js
includesChrome 完全対応 41Edge 完全対応 12Firefox 完全対応 40
完全対応 40
未対応 18 — 48
代替名
代替名 非標準の名前 contains を使用しています。
IE 未対応 なしOpera 完全対応 ありSafari 完全対応 9WebView Android 完全対応 ありChrome Android 完全対応 41Firefox Android 完全対応 40
完全対応 40
未対応 18 — 48
代替名
代替名 非標準の名前 contains を使用しています。
Opera Android 完全対応 ありSafari iOS 完全対応 9Samsung Internet Android 完全対応 ありnodejs 完全対応 4.0.0

凡例

完全対応  
完全対応
未対応  
未対応
非標準の名前を使用しています。
非標準の名前を使用しています。

String.prototype.contains

Firefox 18 - 39 では、このメソッドの名称は contains() でした。バグ 1102219includes() に名称が変更されました。理由は次のとおりです:

MooTools 1.2 を使用したいくつかのウェブサイトは Firefox 17 で壊れたと報告がありました。MooToolsのこのバージョンでは、String.prototype.contains() が存在するかどうか調べ、存在しない場合は追加します。Firefox 17 でこの関数を紹介して、そのチェックの動作が壊れる MooTools の String.prototype.contains() の実装に基づいたコードの原因となる方法で変更されました。結果として、この変更は Firefox 17 で無効になりました。MooTools への働きかけMooTools 1.2.6 リリースが出され、String.prototype.contains() は Firefox 18 以降で利用可能となりました。

MooTools 1.3 では String.prototype.contains() の自身のバージョンに強要しました。そのため、これに依存する Web サイトは壊れませんでした。しかしながら、このメソッドに対する MooTools 1.3 シグニチャー と ECMAScript 2015 シグニチャーでは(第 2 引数に)違いがあることに注意して下さい。MooTools 1.5+ は ES2015 仕様に一致させるためにシグニチャーを変更しました。

Firefox 48 で、String.prototype.contains() は削除されました。String.prototype.includes() だけ使用できます。

関連情報