2
respostas

Nem o gabarito funciona.

Depois de ficar 2 horas tentando resolver, e sem entender a dinâmica do exercício, descobri por acidente como funciona. Achei péssimo! Me senti bem burra... esse método de ensinar algo novo por texto é muito ruim.

2 respostas

Aqui deu problema repetindo a ultima cor.... até eu fazer isso

                                function mudaCor() {



                                    indiceCorAtual++


                                         if (indiceCorAtual > cores.length - 1) {
                                            indiceCorAtual = 0;
                                         }

                                return false;
                               }

}

Repara que eu usei um -1 após o cores.length. Ai deu certo.

Olá Camila/Mauricio, boa tarde! Fazer um complemento, caso não tenham entendido na prática o motivo desse -1.

Se tivermos por exemplo:

Array = [cor1, cor2, cor3]

Notem que o índice dos elementos começa em 0, logo:

  • Índice da cor1 = 0
  • Índice da cor2 = 1
  • Índice da cor3 = 2

Porém o Array.length (comprimento da nossa lista) retorna o número de elementos na lista, que nesse caso são 3.

Se não colocarmos o -1, o que acontece é que ele vai verificar:

indiceCorAtual > cores.length? que é o mesmo que dizer:

  • 0 > 3? - Não, então não entra if. Índice passa a ser 1.
  • 1 > 3? - Não, então não entra if. Índice passa a ser 2.
  • 2 > 3? - Não, então não entra if. Índice passa a ser 3.
  • 3 > 3? - Não, então não entra if. Índice passa a ser 4.
  • 4 > 4? - Sim, entra no if. Índice retorna a ser 0.

Porém, observem que nesse caso, o índice chega a assumir o valor de 3... e somente na próxima troca volta para 0. Mas se lembram que o maior índice da nossa matriz é 2? rs

Por isso ao colocar o cores.length - 1, corrigimos esse problema e fazemos com que ele pare com índice máximo = 2, ou seja, a cor3.

Abraços e bons estudos!