@uroot

Как обработать насколько предыдущих и следующих элементов массива?

Есть массив. Мне нужно обработать 4 предыдущих и 4 следующих элемента навесив на них класс. Исключением должны быть первый и последний элемент массива - их обрабатывать ненужно.

Сейчас я пробую так:
button.find((element, index) => {
                if (element.matches(".-js-active")) {
                    button[index+1]?.classList.add("-js-visible")
                    button[index+2]?.classList.add("-js-visible")
                    button[index+3]?.classList.add("-js-visible")
                    button[index+4]?.classList.add("-js-visible")
                    //
                    button[index-1]?.classList.add("-js-visible")
                    button[index-2]?.classList.add("-js-visible")
                    button[index-3]?.classList.add("-js-visible")
                    button[index-4]?.classList.add("-js-visible")
                } else {
                    if (element.matches(".page-go:not(.-js-last):not(.-js-first)")) {
                        element.classList.remove("-js-visible")
                    }
                }
            })

Но это работает не правильно. Так же мне бы хотелось избавиться от перечисления button[index-N] и button[index+N].

UPD: было бы здорово уместить всё в один перебор массива. А то у меня есть вариант с двумя:
вариант 2

button.forEach((element, index) => {
                if (element.matches(".page-go.-js-visible:not(.-js-last):not(.-js-first)")) {
                    element.classList.remove("-js-visible")
                }
            })
            
            button.find((element, index) => {
                if (element.matches(".-js-active")) {
                    button[index+1]?.classList.add("-js-visible")
                    button[index+2]?.classList.add("-js-visible")
                    button[index+3]?.classList.add("-js-visible")
                    button[index+4]?.classList.add("-js-visible")
                    //
                    button[index-1]?.classList.add("-js-visible")
                    button[index-2]?.classList.add("-js-visible")
                    button[index-3]?.classList.add("-js-visible")
                    button[index-4]?.classList.add("-js-visible")
                }
            })

  • Вопрос задан
  • 125 просмотров
Решения вопроса 1
ArsenyMatytsyn
@ArsenyMatytsyn Куратор тега JavaScript
Руководитель frontend направления, предприниматель
Для работы с DOM хватает интерфейса работы с DOM: https://vk.cc/awd12n
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы