Как сравнить текущий элемент массива со следующим элементом массива в JavaScript

#javascript #arrays #for-loop

#javascript #массивы #для цикла

Вопрос:

У меня есть шаблоны цветов, которые пользователи могут выбирать, а также изменять отдельные цвета, если они хотят. У меня есть два массива: один со всеми шаблонами, и каждый шаблон содержит цветовую палитру из 8 цветов и строку имени шаблона. Большинство моих шаблонов имеют белый фон, поэтому я не хочу, чтобы пользователю приходилось нажимать 12 раз или сколько угодно раз, чтобы перейти к другому индексу, где цвет фона отличается. Моя идея заключалась в том, чтобы использовать оператор «for» для проверки следующего элемента в моем массиве и сравнить его с текущим элементом, чтобы увидеть, идентичны ли они. Если элементы идентичны, то я увеличиваю массив, и оператор «for» снова проверяет, эффективно пропуская любые повторяющиеся индексы, пока не будет найдено новое значение.

Для этого я использую оператор «for», подобный этому:

( ; array[index][colorSlot] == array[index 1][colorSlot]; index )

Это работает отлично, пока я не дойду до последнего индекса массива, и он ищет следующий индекс, который, очевидно, не существует, что полностью нарушает мою функцию. Есть ли способ предотвратить просмотр индекса массива, который не существует? Должен ли я использовать что-то другое, кроме инструкции «for»?

Комментарии:

1. Перейдите к array.length -2 в цикле for. Также почему у вас есть loopcount и используйте index.

2. @arundeepchohan, как мне это сделать?

3. Ваш оператор for выглядит несколько запутанным: инициализация loopcount , условие с array и приращение index . Вы уверены, что это правильный путь?

4. @Sascha, извините, я думаю, мне не нужна никакая инициализация. Отредактировал его.

Ответ №1:

Вы, вероятно, захотите перейти ко второму последнему индексу массива и пропустить все повторы.

 for(let index=0; index<array.length-2; index  )
{
    if[index][colorSlot] != array[index 1][colorSlot]
    {
    }
}
  

Ответ №2:

Вы можете попробовать это с циклом while, в вашем случае это лучший выбор, чем цикл for.

 let index = 0;
while (index < array.length -2 amp;amp; array[index][colorSlot] != array[index 1][colorSlot] ) {
    ...
    index  ;
}  

Ответ №3:

Хорошо, я понял это.

В моем цикле for я проверяю наличие двух условий: СНАЧАЛА я проверяю, [index 1]!=array.length а ЗАТЕМ я проверяю, равно ли текущее значение массива следующему (как написано выше). Если проверка следующего значения индекса приведет к поиску в индексе, который не существует, он завершает выполнение инструкции for и сбрасывает мой индекс.