Ainda não tem acesso? Estude com a gente! Matricule-se
Ainda não tem acesso? Estude com a gente! Matricule-se

Solucionado (ver solução)

Dúvida sobre o Length

As listas e o for começam contar a partir do 0, mas o length começa contar a partir do 0 ou 1?

for (let i = 0; i < imagemCarros.length; i = i + 1) {
    image(imagemCarros[i], xCarros[i], yCarros[i], 50, 40);
  }
5 respostas

Fala Rodrigo, tudo beleza?

A ideia seria a seguinte:

[a, b, c, d]

Na lista acima, temos quatro elementos, ou seja, seu tamanho é 4 (length).

Porém, as listas começam pela posição 0, ou seja, o último elemento é acessado pelo seu tamanho (4) - 1.

[a, b, c, d]
//posiçao 3 retorna o elemento d

Dito isso, podemos concluir que o length te retorna a quantidade de elementos de uma lista, porém para acessá-los de maneira correta, devemos levar em conta que a última posição é sempre uma unidade menor do seu length.

Se algo não ficou claro, basta perguntar.

Espero ter ajudado, abraços!

A lista tem 3 imagens de carros

imagemCarros = [imagemCarro1, imagemCarro2, imagemCarro3];

Em imagemCarros.length seria igual a 3

for (let i = 0; i < imagemCarros.length; i = i + 1) {
    image(imagemCarros[i], xCarros[i], yCarros[i], 50, 40);
  }

Então o length conta a partir do 1, por isso precisar usar < para o for contar de 0 até 2?

solução

Vamos lá!

O length sempre será igual à quantidade de elementos que existem na sua lista, nesse seu caso:

length = 3

Para realizarmos um for, temos as seguintes 'configurações'

for (variavél auxiliar, condição de parada, incremento){}

Com isso definido, nossa intenção é iterar por todos os elementos dessa lista de 3 unidades.

for(let i = 0; i< lista.length; i++)

Nesse primeiro caso, utilizamos o operador < para especificar que a condição de parada é o último momento em que o valor de i seja estritamente menor que o tamanho de sua lista.

Como sabemos que último elemento é sempre o tamanho da lista menos uma unidade, essa lógica funciona.

Caso fizessemos :

for(let i = 0; i<= lista.length; i++)

Nesse caso, o <= permitirá que o valor de i** seja igual ao tamanho (length) da sua lista, e nós sabemos que não existem elementos na posição **3, logo isso resultará em um erro, algo como ArrayIndexOutOfBounds, já que tentamos acessar um elemento que não existe nessa lista.

Ficou mais claro? Qualquer coisa é só perguntar meu amigo!

Abraços!

Agora ficou mais claro, obrigado pela explicação.

Nada!

Sempre que precisar pode contar conosco.

Estou fechando o tópico, qualquer nova dúvida basta criar um novo.

Abraços!