JavaScript метод includes()

Определение и применение

JavaScript метод includes() позволяет определить, содержит ли массив искомый элемент. В случае нахождения элемента метод возвращает логическое значение true, в обратном случае false. Работу метода показывает пример «Как искать значение с начального индекса».

Поддержка браузерами

Спецификация: ecma262

Поддерживается во всех основных браузерах с 2016 года.

Показать браузеры
Совместимостьjavascript.builtins.Array.includes
ВозможностьКомпьютерыМобильные
ChromeEdgeFirefoxOperaSafariChrome AndroidFirefox for AndroidOpera AndroidSafari on iOSSamsung BrowserWebView AndroidWebView on iOS
includes✓47✓14✓43✓34✓9✓47✓43✓34✓9✓5.0✓47✓9

поддерживаетсяс ограниченияминет поддержкинет данных≤31 — не позднее версии 31

JavaScript синтаксис

JavaScript
array.includes(searchElement);
array.includes(searchElement, fromIndex);

Спецификация

ECMAScript: Array.prototype.includes.

Значения параметров

Параметры includes()
Параметр Описание
searchElement Значение, которое требуется найти внутри массива. Обязательное значение.
fromIndex Целое число, определяющее индекс массива, с которого начинается поиск элемента массива. Необязательное значение, если не указано, то поиск осуществляется с 0 индекса.
Допускается использование отрицательных значений, в этом случае индекс с которого будет произведено сравнение элементов будет рассчитан по следующей формуле: length (длина массива) + fromIndex.

Возвращаемое значение

true при наличии значения и false в противном случае; исходный массив не меняется.

Особенности

Сравнение SameValueZero не приводит типы, считает NaN равным NaN и не различает +0 и -0. Пустые позиции читаются как undefined. fromIndex включается в поиск; слишком отрицательный индекс означает поиск с 0, индекс от length — отсутствие совпадения.

Примеры, попробуйте сами

Как искать значение с начального индекса

Измените искомое значение или fromIndex и сравните результаты поиска.

index.html
HTML
<p>Результат выполнения выводится в консоль.</p>
main.js
JavaScript
var x = [1, 2, 3, 'a', 'b', 'c'] // инициализируем переменную, содержащую массив

console.log(x.includes('a')) // возвращаемое значение true
console.log(x.includes('d')) // возвращаемое значение false (значение не найдено в массиве)
console.log(x.includes('b', 3)) // возвращаемое значение true
console.log(x.includes(2, 2)) // возвращаемое значение false (значение не найдено в массиве)
console.log(x.includes(2, 1)) // возвращаемое значение true
console.log(x.includes('a', -2)) // возвращаемое значение false (значение не найдено в массиве)
console.log(x.includes('a', -3)) // возвращаемое значение true

// includes() читает пустую позицию как undefined, а indexOf() её пропускает.
console.log('Пустая позиция, includes():', [,].includes(undefined)) // true
console.log('Пустая позиция, indexOf():', [,].indexOf(undefined)) // -1
console.log('Значение undefined:', [undefined].includes(undefined)) // true

Обратите внимание на то, что если вы ищете внутри массива NaN (Not a number - не число), независимо от наличия возвращаемое значение метода indexOf() будет -1, а метод includes() проверяет фактическое наличие:

Почему includes() находит NaN

Замените NaN другим значением или добавьте его в массив. Сравните результаты indexOf() и includes().

index.html
HTML
<p>Результат выполнения выводится в консоль.</p>
main.js
JavaScript
var x = [NaN] // инициализируем переменную, содержащую одно значение NaN

console.log(x.indexOf(NaN)) // возвращаемое значение -1 (элемент не найден)
console.log(x.includes(NaN)) // возвращаемое значение true (элемент найден)