Differenza tra creare array utilizzando new Array () e new Object in Javascript [duplicato]

Oct 26 2020

Vedo l'esempio che crea un array utilizzando

var array = new Array(5);

ma vedo anche qualcosa di simile

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

Penso che il codice sopra crei un oggetto con due nomi di campo 0 e 10 come sotto? È corretto?

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

diverso in questo modo a due per creare array utilizzando new Array () e new Object?

Risposte

1 Metabolic Oct 26 2020 at 20:52

Arraye Objectsono diversi l'uno dall'altro. Tecnicamente, ciò che stai facendo rende la struttura dei dati e l'utilità per il momento uguali, ma perdi le funzioni del prototipo e non puoi usarlo trasversalmente.

Ad esempio, Array.forEach()eseguirà un ciclo su un array ma non su un oggetto la cui coppia chiave / valore è equivalente a quella dell'indice / elemento di un 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]);
  });