2
respostas

Porque o tamanho da lista [ , , , ] é 3 e não 4? Resposta!

Me perguntei o porquê do tamanho ser 3 e não 4, e a resposta é que a última "casa" vazia é ignorada ou desconsiderada.

Fiz o teste com o código abaixo:

const arraySem1oValor = [ , 'valor' ];
const arraySem2oValor = [ 'valor' , ];

Enquanto a primeira tem o primeiro valor undefined e vazio e tamanho (length) 2, a segunda contém apenas o valor 'valor', o segundo espaço não é adicionado e o tamanho da lista é 1 (e não 2).

2 respostas

Oi, Renan! Tudo bem?

Parabéns pela iniciativa de compartilhar a descoberta com a comunidade do fórum, tenho certeza que sua participação ativa pode ajudar muitos colegas por aqui. Caso tenha ficado alguma dúvida em relação ao curso ou atividade, sinta-se à vontade em comunicar, estou à disposição e ficarei super feliz em poder ajudar!

Um forte abraço e bons estudos!

Olá Renan! Tudo bem?

Como forma de complementar ao que você disse, quando você cria um array como [ , , , ], está criando um array esparso com três posições, mas sem valores definidos nessas posições. Por isso, o length do array é 3. É como se você tivesse três "gavetas" vazias.

No caso do seu teste:

  1. const arraySem1oValor = [ , 'valor' ]; - Aqui, você tem um array com duas posições: a primeira é vazia (undefined) e a segunda contém o valor 'valor'. Por isso, o length é 2.

  2. const arraySem2oValor = [ 'valor' , ]; - Neste caso, você tem um array com uma posição que contém o valor 'valor'. O segundo espaço que parece estar vazio no final não é contado, então o length é 1.

O comportamento que você está observando é devido à forma como o JavaScript trata arrays esparsos. Quando você adiciona vírgulas sem valores entre elas, você está criando espaços vazios, mas esses espaços ainda são contados no comprimento do array.

Bons estudos!