Array.includes(): проверка наличия значения
Метод includes проверяет, встречается ли значение в массиве, и возвращает true или false.
Назначение
Метод includes проверяет, встречается ли значение в массиве, и возвращает true или false.
Как это работает
Сравнение не преобразует строку в число. Метод умеет находить NaN, в отличие от indexOf. Объекты сравниваются по идентичности ссылки, а не по набору одинаковых свойств.
Пример
console.assert([1,3,5].includes(3));
console.assert(![1,3,5].includes('3'));
console.assert([NaN].includes(NaN));
const item={id:1};
console.assert([item].includes(item));
console.assert(![item].includes({id:1}));
Что должно получиться
Число находится, строка не находится, NaN находится. Один и тот же объект совпадает по ссылке; новый объект с тем же id остаётся отдельным значением.
Граница применения и частая ошибка
Новый объект с такими же полями не считается тем же элементом. Для поиска записи по id используйте условие в some или find, а не includes с заново созданным объектом.
Самостоятельная проверка
Сравните число 3 и строку "3", затем два отдельных объекта {id:1}. Объясните, почему внешне одинаковое содержимое не гарантирует совпадение.
JavaScript в песочнице этого сайта не выполняется. Перенесите пример в отдельный учебный файл. Сначала проверьте исходный результат, затем измените входные данные; ошибка проверки означает, что результат отличается от ожидаемого.