MDN’s new design is in Beta! A sneak peek: https://blog.mozilla.org/opendesign/mdns-new-design-beta/

String.prototype.includes()

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

構文

str.includes(searchString[, position])

引数

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

戻り値

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

説明

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

大文字小文字の区別

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

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

例: 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

互換性

このメソッドは 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 2015 (6th Edition, ECMA-262)
String.prototype.includes の定義
標準 初期定義。
ECMAScript 2017 Draft (ECMA-262)
String.prototype.includes の定義
ドラフト  

ブラウザ実装状況

機能 Chrome Firefox (Gecko) Internet Explorer Opera Safari
基本サポート 41 40 (40) 未サポート 未サポート 9
機能 Android Chrome for Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
基本サポート 未サポート 未サポート 40.0 (40) 未サポート 未サポート 未サポート

String.prototype.contains

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

MooTools 1.2 を使用したいくつかの Web サイトは 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() だけ使用できます。

関連情報

ドキュメントのタグと貢献者

 このページの貢献者: kdex, YuichiNukiyama, shide55
 最終更新者: kdex,