Diferença entre criar array usando new Array () e new Object em Javascript [duplicado]

Oct 26 2020

Eu vejo o exemplo que cria uma matriz usando

var array = new Array(5);

mas também vejo algo assim

arrayObj[0] = "index zero";
arrayObj[10] = "index ten";

Acho que o código acima cria um objeto com dois nomes de campo 0 e 10 como abaixo? Isso está correto?

arrayobj {
0: "index zero"
10: "index ten"
}

alguma diferença nesta forma de criar array usando new Array () e new Object?

Respostas

1 Metabolic Oct 26 2020 at 20:52

Arraye Objectsão diferentes um do outro. Tecnicamente, o que você está fazendo faz com que a estrutura de dados e a utilidade sejam as mesmas por enquanto, mas você perde as funções de protótipo e não pode usá-las do lado oposto.

Ex: Array.forEach()fará um loop em um array, mas não fará um loop em um objeto cujo par chave / valor seja equivalente ao do índice / item de um array

var array = new Array(5).fill('index');

arrayObj = {};
arrayObj[0] = "index zero";
arrayObj[10] = "index ten";
try {
  console.log(array.length);
  array.forEach(i => console.log(i));
  
  

  console.log(arrayObj.length);
  arrayObj.forEach(i => console.log(i));
  } catch (e) { console.error(e); }
  
  //looping over Object
  
  Object.keys(arrayObj).forEach((item)=>{ 
     console.log(arrayObj[item]);
  });