Array.prototype.includes()

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

構文

arr.includes(valueToFind[, fromIndex])

引数

valueToFind

検索する値です。

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

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

返値

Boolean で、 truevalueToFind の値が配列内 (または、 fromIndex が指定された場合はそれで示された配列の部分) から見つかった場合です。

ゼロの値はすべて、符号にかかわらず等しいとみなされます (つまり、 -00+0 の両方に等しいとみなされます) が、 false0 と同じとはみなされません

注: 技術的に言えば、 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 を返します。

let arr = ['a', 'b', 'c']

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

計算値のインデックスが0より小さい場合

fromIndex が負の値である場合、計算値のインデックスは配列内で valueToFind の円策を開始する位置として使用するよう計算されます。計算値のインデックスが -1 * arr.length 以下の場合は、配列全体が検索されます。

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

let arr = ['a', 'b', 'c']

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

ジェネリックメソッドとして使用される includes()

includes() メソッドは意図的にジェネリックになっています。 this が Array オブジェクトであることは必須ではないので、他の種類のオブジェクト (例えば配列風オブジェクト) にも適用することができます。

以下の例は、 includes() メソッドが関数の arguments オブジェクトに対して使用される様子を示しています。

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

仕様書

仕様書
ECMAScript (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 完全対応 47Chrome Android 完全対応 47Firefox Android 完全対応 43Opera Android 完全対応 34Safari iOS 完全対応 9Samsung Internet Android 完全対応 5.0nodejs 完全対応 6.0.0
完全対応 6.0.0
完全対応 5.0.0
無効
無効 From version 5.0.0: this feature is behind the --harmony runtime flag.

凡例

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

関連情報