JavaScript Array `includes()`
The Array#includes()
method returns true
if the array contains a given element, or false
otherwise.
const arr = ['a', 'b', 'c'];
arr.includes('b'); // true
arr.includes('z'); // false
arr.includes(1); // false
Equality Comparison
The includes()
method uses the "SameValueZero" algorithm for determining if two values are equal. For almost all
cases, "SameValueZero" is equivalent to strict equality using ===
. In particular,
includes()
does not do any type coercion.
const arr = ['1', '2', '3'];
arr.includes('1'); // true
arr.includes(1); // false
The includes()
only treats two objects as equal if they are the same reference:
const obj1 = { name: 'Jean-Luc Picard' };
const obj2 = { name: 'Jean-Luc Picard' };
const arr = [obj1];
arr.includes(obj1); // true
arr.includes(obj2); // false
The only difference is how SameValueZero handles NaN
. In JavaScript, NaN !== NaN
. However, includes()
can correctly find NaN
and Number.NaN
in an
array.
const arr = [NaN];
arr.includes(NaN); // true
arr.includes(Number.NaN); // true
arr[0] === NaN; // false
Environment Support
The includes()
method was introduced in ES2016, which makes
it a relatively new feature. In particular, no version Internet Explorer supports includes()
. If you expect your
JavaScript to run in Internet Explorer or versions of Node.js before 5.0.0, you should use indexOf()
, which enjoys
better browser support and is equivalent except for NaN
.