JavaScript · справочник
Метод Array.includes()
includes() возвращает true, если массив содержит указанное значение. Метод удобен для простых строк, чисел и проверки разрешённого набора.
Базовая проверка
Сравнение строгое: строка '2' не равна числу 2. Поиск чувствителен к регистру.
const roles = ['admin', 'editor', 'reader'];
roles.includes('editor'); // true
roles.includes('Editor'); // false
Начальная позиция
Второй аргумент задаёт индекс, с которого начинается поиск. Отрицательное значение отсчитывается от конца массива.
const values = [1, 2, 3, 2];
values.includes(2, 2); // true
Частые ошибки
- Ожидать найденный индекс.
- Искать объект по содержимому.
- Не учитывать регистр строки.
- Путать includes массива и строки.
Практика
Создай список разрешённых расширений файлов и проверь три имени. Нормализуй регистр перед сравнением.
Связанные темы
Точные проверки с includes
includes отвечает только на вопрос, присутствует ли значение в массиве, и возвращает boolean. Для строк и чисел это обычно самый читаемый вариант. Метод умеет находить NaN, в отличие от indexOf. Второй аргумент задаёт позицию начала поиска; отрицательное значение отсчитывается от конца массива.
Объекты сравниваются по ссылке, а не по содержимому. Новый литерал { id: 1 } не равен похожему объекту в массиве. Для поиска объекта по свойству используй some или find. Если проверка не должна учитывать регистр строк, сначала нормализуй элементы и искомое значение.
Разберём рабочий пример
const roles = ["student", "editor", "admin"];
console.log(roles.includes("admin")); // true
const users = [{ id: 1 }, { id: 2 }];
console.log(users.some(user => user.id === 2)); // trueНе копируй пример вслепую: измени данные, убери одну строку и посмотри, как меняется результат. Такой эксперимент быстрее показывает роль каждой части кода, чем простое чтение.
Проверка перед использованием
- Нужно получить true или false.
- Сравниваются примитивы или та же ссылка.
- Для объектов выбран some или find.
- Регистр строк обработан явно.
Попробуй в браузере
Измени код и нажми «Запустить». Результат появится ниже.