Array.prototype.includes()

includes() メソッドは、特定の要素が配列に含まれているかどうかを true または false で返します。与えられた要素が見つかるかどうかを計算するために、 SameValueZero (ゼロの同値) アルゴリズムを使用します。

構文

arr.includes(valueToFind[, fromIndex])

引数

valueToFind

検索する値です。

メモ: 文字列や文字を比較するとき、 includes()大文字と小文字を区別します

fromIndex Optional
この配列内で valueToFind を探し始める位置です。検索される最初の文字は、 fromIndex が正の値の場合は、 fromIndex で見つかり、 fromIndex が負の数の場合は (fromIndex絶対値だけ配列の末尾から文字数を戻った位置が検索開始地点となり)、 fromIndex または array.length + fromIndex で見つかります。既定値は0です。

返値

Boolean で、 truevalueToFind の値が配列内 (または、 fromIndex が指定された場合はそれで示された配列の部分) から見つかった場合です。ゼロの値はすべて、符号にかかわらず等しいとみなされます (つまり、 -0 は 0 と +0 の両方に等しいとみなされます) が、 false は 0 と同じとはみなされません。

Note: 技術的に言えば、 includes()sameValueZero アルゴリズムを使用して、指定された要素が見つかったかどうかを確認しています。

[1, 2, 3].includes(2);     // true
[1, 2, 3].includes(4);     // false
[1, 2, 3].includes(3, 3);  // false
[1, 2, 3].includes(3, -1); // true
[1, 2, NaN].includes(NaN); // true

fromIndex が配列の長さと同じか大きい場合

fromIndex が配列の長さと同じか大きい場合は配列を検索せずに false を返します。

var arr = ['a', 'b', 'c'];

arr.includes('c', 3);   // false
arr.includes('c', 100); // false

補正されたインデックスが0より小さい場合

fromIndex が負の値である場合、searchElement を検索する配列中の起点として補正されたインデックスを算出します。補正されたインデックスが0より小さい場合は配列のすべてを検索します。

// 配列の長さは 3
// fromIndex は -100
// 補正されたインデックスは 3 + (-100) = -97

var arr = ['a', 'b', 'c'];

arr.includes('a', -100); // true
arr.includes('b', -100); // true
arr.includes('c', -100); // true
arr.includes('a', -2); // false

Array ではないオブジェクトでincludes()を使う

includes() は意図的に一般化されています。元の値が配列である必要がないため、他の種類の (配列風の) オブジェクトにも適用することができます。以下は includes() メソッドが関数の arguments オブジェクトに対して使用された場合の例です。

(function() {
  console.log([].includes.call(arguments, 'a')); // true
  console.log([].includes.call(arguments, 'd')); // false
})('a','b','c');

仕様書

仕様書 状態 備考
ECMAScript Latest Draft (ECMA-262)
Array.prototype.includes の定義
ドラフト
ECMAScript 2016 (ECMA-262)
Array.prototype.includes の定義
標準 初回定義

ブラウザーの互換性

Update compatibility data on GitHub
デスクトップモバイルサーバー
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewAndroid 版 ChromeAndroid 版 FirefoxAndroid 版 OperaiOSのSafariSamsung InternetNode.js
includesChrome 完全対応 47Edge 完全対応 14Firefox 完全対応 43IE 未対応 なしOpera 完全対応 34Safari 完全対応 9WebView Android 完全対応 ありChrome Android 完全対応 47Firefox Android 完全対応 43Opera Android 完全対応 34Safari iOS 完全対応 9Samsung Internet Android 完全対応 ありnodejs 完全対応 6.0.0
完全対応 6.0.0
完全対応 5.0.0
無効
無効 From version 5.0.0: this feature is behind the --harmony runtime flag.

凡例

完全対応  
完全対応
未対応  
未対応
ユーザーが明示的にこの機能を有効にしなければなりません。
ユーザーが明示的にこの機能を有効にしなければなりません。

関連情報