includes() проверяет, есть ли в массиве указанное значение.
Это удобный метод, когда нужен простой ответ: элемент есть или его нет.
Синтаксис
array.includes(value)
array.includes(value, fromIndex)
value - значение, которое нужно найти.
fromIndex - позиция, с которой начинать поиск.
Что делает includes()
Метод проходит по массиву и проверяет, встречается ли в нём нужное значение.
const numbers = [10, 20, 30];
console.log(numbers.includes(20)); // true
console.log(numbers.includes(50)); // false
Что возвращает includes()
includes() всегда возвращает булево значение:
true, если элемент найденfalse, если элемент не найден
const fruits = ["apple", "banana", "orange"];
console.log(fruits.includes("banana")); // true
console.log(fruits.includes("grape")); // false
Это главное, что нужно запомнить про метод.
Поиск с fromIndex
Вторым аргументом можно указать, с какой позиции начинать поиск.
const numbers = [1, 2, 3, 2];
console.log(numbers.includes(2, 2)); // true
console.log(numbers.includes(1, 2)); // false
Здесь поиск начинается с индекса 2.
Отрицательный fromIndex
fromIndex может быть отрицательным.
В этом случае отсчёт идёт с конца массива.
const numbers = [1, 2, 3, 4];
console.log(numbers.includes(3, -2)); // true
console.log(numbers.includes(2, -2)); // false
Это удобно, когда нужно искать только в хвосте массива.
includes() и indexOf()
Эти методы часто решают похожую задачу, но возвращают разное.
const numbers = [10, 20, 30];
console.log(numbers.includes(20)); // true
console.log(numbers.indexOf(20)); // 1
includes() отвечает на вопрос “есть ли элемент?”.
indexOf() отвечает на вопрос “на каком индексе находится элемент?”.
Если нужна просто проверка, includes() обычно читается понятнее.
includes() умеет находить NaN
Это важное отличие от indexOf().
const values = [1, 2, NaN];
console.log(values.includes(NaN)); // true
console.log(values.indexOf(NaN)); // -1
Поэтому для проверки наличия NaN удобнее использовать именно includes().
Объекты сравниваются по ссылке
Если в массиве лежат объекты, includes() сравнивает не содержимое, а ссылку на объект.
const user = { id: 1 };
const users = [user];
console.log(users.includes(user)); // true
console.log(users.includes({ id: 1 })); // false
На вид объекты одинаковые, но это разные ссылки в памяти.
includes() не меняет исходный массив
Метод только проверяет наличие значения и не изменяет массив.
const numbers = [1, 2, 3];
const result = numbers.includes(2);
console.log(numbers); // [1, 2, 3]
console.log(result); // true
Пустые слоты
includes() работает с пустыми слотами как с undefined.
const arr = Array(3);
console.log(arr.includes(undefined)); // true
Это может выглядеть неожиданно, особенно если до этого использовать методы вроде map() или filter(), которые пустые слоты пропускают.
Когда это полезно
includes() удобно использовать, когда:
- нужно проверить наличие примитивного значения в массиве
- нужен ответ
trueилиfalse - важно быстро и читаемо проверить наличие элемента
Пример:
const roles = ["user", "editor", "admin"];
const canEdit = roles.includes("editor");
console.log(canEdit); // true
Частые ошибки
Думать, что includes() возвращает индекс
const numbers = [1, 2, 3];
const result = numbers.includes(2);
console.log(result); // true
Если нужен индекс, нужен indexOf().
Сравнивать объекты по содержимому
const items = [{ id: 1 }];
console.log(items.includes({ id: 1 })); // false
Для объектов сравнение идёт по ссылке.
Забывать про fromIndex
const numbers = [1, 2, 3, 2];
console.log(numbers.includes(2, 3)); // true
Поиск начинается не с начала массива, а с указанной позиции.
Быстрая памятка
includes()проверяет, есть ли значение в массиве- метод возвращает
trueилиfalse - можно задать стартовую позицию поиска через
fromIndex includes()умеет находитьNaN- для объектов сравнение идёт по ссылке
Коротко
includes() - это удобный способ быстро проверить, есть ли значение в массиве. Главное, что стоит запомнить: метод возвращает только true или false, а не индекс, и обычно читается проще, чем indexOf() !== -1.