Как по проще, зная элемент, определить его номер в массиве?
Допустим, в слайдере все его изображения хранятся в некотором массиве arr. Демонстрируется arr[i] изображение. Получить предыдущее/следующее можно arr[--i] / arr[++i]. Но где то на страничке демонстрируется набор уменьшенных слайдов, кликнув на любой, мы его увидим. Так как, скажем, при клике на img_chosen.jpg мы узнаем его i-й номер в массиве? Есть, конечно, перебор со всякими пузырьковыми сортировками, функции для проверки, выше/ниже объект находится в иерархии DOM, но неужели нет чего попроще?
Еще раз:
Легко:
arr[i] => значение
Как имея "значение", попроще выяснить его i ?
Разумеется, можно тупо записать каждому элементу его номер в соответствующий атрибут. Но некоторые валидаторы при виде нестандартного атрибута начинают верещать
Кажется, вариант для некоторых случаев (для DOM -элементов) нашел. Если каждому элементу присвоить номер в атрибуте data-имя_аттриб, то валидацию вроде пройдет. Т. е. data-position = 1, data-position = 2... Причем везде кроме 10-Ослика и ниже можно обратиться к таким атрибутам по свойству: элемент. dataset.имя_аттриб
i = imgChosen.dataset.position
Сразу видно, что два предыдущих ответа от тех, кто не знает языка
array.indexOf('значение')
Вернет ключ, если элемент найден (от 0 и больше)
Если значения нет, то вернет -1
Важно: indexOf проводит строгое сравнивание (то есть ===)
Для массива только перебор
А зачем использовать нестандартные атрибуты? Для этих целей существует специальный тип произвольных пользовательских атрибутов, имеющих префикс "data-". Так что можешь написать data-id="3" или data-number="17" - и это будет полностью соответствовать стандарту HTML. И для работы с data-атрибутами в JavaScript есть специальный набор методов.
Подробности: https://webref.ru/html/attr/data
Ассоциативный массив используй, помещай данные не по индексу, а по имени, например.