@DeniSidorenko

Каким образом сделать такую проверку по массиву JS?

Добрый день есть такой массив
var arrayPositions = [493.19998931884766, 916.5999755859375, 1340, 1763.3999633789062, 2186.7999877929688, 2916.2001342773438, 3339.6000366210938, 4068.9999389648438, 4492.400085449219, 4915.799987792969]


10 координат.
Это координаты элементов что я получаю через цикл each.
У Jquery есть такая функция
$(window).on('scroll', function () {
      var scroll = $(window).scrollTop();
  });


Вопрос
Каким образом можно сделать такую проверку, что если var scroll имеет значения больше 0 элемента но меньше 1 , я получаю индекс 0 элемента. Если к примеру число больше 4 элемента но меньше 5 я получаю его индекс

И насколько правильно делать такую проверку в Window.Scroll. функцию. Ведь проверка будет каждый раз при каждом px
  • Вопрос задан
  • 54 просмотра
Решения вопроса 1
MagnusDidNotBetray
@MagnusDidNotBetray
Самый елеустремленный человек
Рассчитываем на то, что массив отсортирован.
if (scroll < arrayPositions[0]) return;
let index = arrayPositions.findIndex((el, i, arr) => scroll < arr[i + 1]);
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@rostik_tsekhmistro
Data Scientist
Просто пройдись по массиву и найди нужную позицию.

$(window).on('scroll', function () {
      var scroll = $(window).scrollTop();
      let id_ = 0;
      for (const z in arrayPositions){
          if (z < scroll) {
                id_++;
          }
     }
  });

В id_ будет храниться позиция в массиве.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы