#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 и сбрасывает мой индекс.