JavaScript метод includes()
Определение и применение
JavaScript метод includes() позволяет определить, содержит ли массив искомый элемент. В случае нахождения
элемента метод возвращает логическое значение true, в обратном случае false. Работу метода
показывает пример
«Как искать значение с начального индекса».
Поддержка браузерами
Спецификация: ecma262
Поддерживается во всех основных браузерах с 2016 года.
| Возможность | Компьютеры | Мобильные | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
includes | 47 | 14 | 43 | 34 | 9 | 47 | 43 | 34 | 9 | 5.0 | 47 | 9 |
поддерживаетсяс ограниченияминет поддержкинет данных≤31 — не позднее версии 31
JavaScript синтаксис
array.includes(searchElement);
array.includes(searchElement, fromIndex);Спецификация
ECMAScript: Array.prototype.includes.
Значения параметров
| Параметр | Описание |
|---|---|
searchElement |
Значение, которое требуется найти внутри массива. Обязательное значение. |
fromIndex |
Целое число, определяющее индекс массива, с которого начинается поиск элемента массива.
Необязательное значение, если не указано, то поиск осуществляется с 0 индекса.
Допускается использование отрицательных значений, в этом случае индекс с которого будет произведено сравнение элементов будет рассчитан по следующей формуле: length (длина массива) +
fromIndex.
|
Возвращаемое значение
true при наличии значения и false в противном случае; исходный массив не меняется.
Особенности
Сравнение SameValueZero не приводит типы, считает NaN равным NaN и не различает
+0 и -0. Пустые позиции читаются как undefined. fromIndex включается в поиск; слишком
отрицательный индекс означает поиск с 0, индекс от length — отсутствие совпадения.
Примеры, попробуйте сами
Как искать значение с начального индекса
Измените искомое значение или fromIndex и сравните результаты поиска.
index.html
<p>Результат выполнения выводится в консоль.</p>
main.js
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
<p>Результат выполнения выводится в консоль.</p>
main.js
var x = [NaN] // инициализируем переменную, содержащую одно значение NaN
console.log(x.indexOf(NaN)) // возвращаемое значение -1 (элемент не найден)
console.log(x.includes(NaN)) // возвращаемое значение true (элемент найден)