Андрей Киреев
Андрей Киреев

Что не так делаю? Должно из импута элемент сверяться с элементом из массива а1

и если он там есть сотвествено выводить его индекс. У меня выводит -1, то есть не находит. Хотя консоль видит что ввожу в инпут
_________________________________________
Код здесь:
codepen.io/vvv7220/pen/JjKewMo?editors=0010
_________________________________________

AB
Anastasia Bambola

Из input всегда прилетает строка. Когда вводят 1, indexOf ищет в массиве строку "1" и не находит его (там число 1)

let a1 = [1, 2, 3, 4, 'hi'];
▼заменить
let a1 = ["1", "2", "3", "4", "hi"];

Или надо поменять логику поиска, заменить indexOf на более сложную обработку.

ВГ
Виктория Гнусарькова

Если массив маленький, то findIndex с коллбэком для поиска строк (и значений смешанных типов) использовать гораздо разумнее. Другой вариант, при возможности исключить один из символов из ввода - это поиск регуляркой по строковому словарю (простые рег. выражения в ряде случаев не только проще, но и быстрее перебора массива в интерпретируемом юзеркоде. Почему так - это отдельная обширная тема).
А если массив большой - то вместо него нужно использовать хэштаблицу (с нормализацией ввода), это без вариантов. Потому что тормоза на переборе элементов будут просто колоссальные, а у ХТ поиск ключа всегда стремится к O(1). Еще, очень хорошую производительность поиска по большим данным показывают деревья (иногда даже лучшую, чем у ХТ: при долгом доступе к данным, и при диапазонном/прогрессивном поиске).

Чем плох indexOf - да ничем, он всем хорош. Просто он для совершенно других целей предназначен (например, для поиска в массиве объектов).

// В целом, эта задача из категории "как потратить время впустую", потому что в реальности поиск реализуется совершенно иначе. Подобные задачи учат антипаттернам => очень вредны всем, кто хочет научиться программированию, и адекватному использованию JS.

Похожие вопросы
С++ Получился отриц. индекс элемента в массиве. Что делать?
Как упорядочить элементы массива?
Массивы. Найти максимальный элемент массива и номера этих элементов,равных максимальному.
Удаление элементов из массива с++
Не правильно удаляются элементы массива
как удалить из массива все элементы
Элементы массива упорядочены по…
Что называют элементом массива?
как найти элементы массива
В массиве индексы элементов должны быть