Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

New Array() e [ ]

Boa noite, galera!

Vi usarem em cada curso uma estrutura de array diferente e não encontrei explicação sobre a diferença, enfim, há diferença entre declarar:

var lista = new Array( )

OU

var lista = [ ]

Sei que ambas criam um array, mas há diferença? Há dica de preferência?

4 respostas
solução!

Olá Giovani!

A principio elas são iguais ao olhar mesmo, ambas são arrays.

A diferença real entre elas é que em uma eu já posso separar o tamanho do espaço de memória para uma, sendo:

var minhaArray = new Array(20)

Neste exemplo já coloquei 20 "espaços" pro array na memória.

var minhaArray = new Array()

Neste outro aqui já não reservei nada, seria a mesma coisa que fazer isso aqui:

var minhaOutraArray = []

Porém, fizermos isso:

var minhaOutraArray = [35]

Criamos uma array com o valor 35 dentro. E criando como criando com colchetes não determina-se o tamanho do array, ele vai aumentar o espaço ocupado de memória conforme adiciona-se itens (com push ou unshift por ex.).

Quanto a dicas de preferência. De forma universal para programação sempre é melhor você separar só a memória que vai usar. Por mais que isso soe como aula de linguagem C a 20 anos atrás quando 32MB de RAM era Wow! e um maloc podia fazer um estrago (maloc é uma função que aloca memória), ainda é válido.

Portanto a melhor abordagem seria a criação de array sem definir o tamanho se não tiver idéia o quanto vai usar, deixando no automático mesmo. E se você souber, coloca certinho o quanto deve usar faria sentido, mas o JS se você estrapolar não vai dar problema, ela vai fazer o ajuste mesmo assim.

Usar var minhaArray = new Array() é melhor no sentido de facilidade de leitura, fica bem mais simples de entender no seu código que você quis criar um array ali.

Mas nada te impede de criar uma array já com os componentes dentro usando. Iniciar ela já atribuindo os elementos é tão legível quanto.

var minhaOutraArray = [1,2,3,4,5]

Espero ter esclarecido e ter ajudado =)

Abraços, Daniel

Oi, Daniel, obrigado pela resposta.

Entendi, então, o new Array ( ) seria mais útil como forma de controle de memória, já determinando o quanto vamos usar em algum momento.

Então, isso aqui:

var minhaArray = new Array(5);

Não vai criar nenhum elemento na array, mas sim um length de 5 elementos pré-determinados na memória, é isso? Para dizer que vamos ter 5 elementos ali, futuramente? Mas se fosse:

var minhaArray = new Array(5, 7);

Aí, já seria criado realmente um array com os elementos 5 e 7, certo?

Mas creio que já esclareceu a minha dúvida haha muito obrigado, abraços!

Isso mesmo Giovani!

var minhaArray = new Array(5);
>> undefined
>> minhaArray
>> (5) [empty × 5]
var minhaArray_2 = new Array(5, 7);
>> undefined
>> minhaArray_2
>> (2) [5, 7]

Marquei com >> as saídas do terminal. Experimente apertar F12, ir no console e digitar esses testes.

Com o que coloquei você viu que a sua sugestão aconteceu conforme você deduziu.

E temos um (5) [empty × 5] no caso do new Array(5) que mostra que temos cinco posições vazias.

Tudo certo! =)

Beleza, Daniel, farei o teste, sim!

Valeu a ajuda, de novo, abraços!