Аналог функции in_array() из PHP в JavaScript: решение
Быстрый ответ
Если вам нужен JavaScript-аналог функции in_array() из PHP, замечательно подойдет метод Array.includes(), позволяющий проверить, включает ли массив конкретный элемент. Смотрите пример ниже.
const pets = ['cat', 'dog', 'bat'];
const isDogPresent = pets.includes('dog'); // вернет true
Для поддержки устаревших браузеров, например, IE9 и старше, вы можете использовать метод Array.indexOf(), который возвращает индекс найденного элемента или -1, если элемент не обнаружен.
const isDogPresent = pets.indexOf('dog') !== -1; // результат также будет true

Поддержка старых браузеров
Дабы реализовать поддержку метода includes() даже в устаревших браузерах, можно применить следующий полифилл:
if (!Array.prototype.includes) {
  Array.prototype.includes = function(searchElement /*, fromIndex*/) {
    var O = Object(this);
    var len = parseInt(O.length, 10) || 0;
    if (len === 0) {
      return false;
    }
    var n = parseInt(arguments[1], 10) || 0;
    var k = n >= 0 ? n : Math.max(len + n, 0);
    while (k < len) {
      if (searchElement === O[k] ||
         (searchElement !== searchElement && O[k] !== O[k])) { 
        return true;
      }
      k++;
    }
    return false;
  };
}
Если аимеете достичь профессионального уровня: Проверка глубокого равенства
Методы includes и indexOf проводят поверхностное сравнение, что может быть недостаточно при работе со сложными типами данных. В таком случае можно воспользоваться рекурсивной функцией arrayCompare для глубокого сравнения:
function arrayCompare(value, array) {
  return array.some(function(element) {
    if (element === value) {
      return true;
    }
    if (typeof element === 'object' && typeof value === 'object') {
      return JSON.stringify(element) === JSON.stringify(value);
    }
    return false;
  });
}
const trendyColors = [{ color: 'red' }, { color: 'blue' }];
const isRedFashionable = arrayCompare({ color: 'red' }, trendyColors); // возвращает true
Визуализация
Представьте, что вы член книжного клуба, в котором есть следующий список книг:
Книжный клуб 📚: [JavaScript, Python, Ruby, Java]
И вы хотите узнать:
Находится ли "JavaScript" на полке книжного клуба? 🤔
Для этого в JavaScript существует метод includes():
const bookshelf = ['JavaScript', 'Python', 'Ruby', 'Java'];
console.log(bookshelf.includes('JavaScript')); // вернет true 🎉
Результат говорит за себя:
📚➡️ "JavaScript"? ➡️ ✅ Да, книга на полке!
Когда нужно выйти на свой путь: Ручная реализация
В определенных сценариях ручная реализация может оказаться более эффективной:
Высоконагруженные задачи: Применение кастомных функций может предоставить большую оптимизацию при работе с увесистыми наборами данных.
Сложные непримитивные типы: Комплексные данные, включающие в себя объекты и функции, требуют более аккуратного подхода.
Модульность кода: Пользовательские функции могут стать лучшим решением для интеграции в вашу собственную инфраструктуру или фреймворк.
Избегаем ловушек: Грязные изменения прототипов
Старайтесь не менять Array.prototype напрямую, чтобы не вызвать конфликты с библиотеками и устранить возможные ошибки. Вместо этого определите вспомогательные функции.
function inArray(element, array) {
  return array.indexOf(element) > -1;
}
const preferredLanguages = ['Python', 'JavaScript'];
const isJavaScriptPreferred = inArray('JavaScript', preferredLanguages); // Вернет true
Таким образом, вы обеспечиваете сохранность глобального контекста и избегаете возможных конфликтов.
Полезные материалы
- Array.prototype.includes() – JavaScript | MDN — документация MDN с подробным описанием метода 
.includes(). - Метод JavaScript Array includes() — объяснение метода 
.includes()на примерах. - Массивы — подборка материалов по работе с массивами в JavaScript.
 - Array.prototype.indexOf() – JavaScript | MDN — описание метода 
.indexOf()как альтернативы.includes(). - Как проверить, содержит ли массив значение в JavaScript? – Stack Overflow — обсуждение различных способов проверки содержимого массива.
 - Сравнение объектов в JavaScript – Stack Overflow — дебаты о сравнении объектов в контексте массивов.
 


