Con mia grande sorpresa, questo codice funziona davvero in node.js:Gli array node.js sono in realtà delle hashmap?
var arr = new Array();
// also works: var arr = [];
arr[0] = 123;
arr['abc'] = 456;
arr; // node.js: [ 123, abc: 456 ], chrome: [123]
Ho sempre pensato che un array memorizza i propri oggetti in ordine, accessibile solo con una chiave intero, come uno std :: vector in C++. Tuttavia, qui si comporta come una mappa o un oggetto. Aggiungendo alla confusione, lo stesso codice funziona come previsto in chrome, restituendo un array con una singola voce, 123. Ho pensato che node.js e chrome javascript utilizzano lo stesso motore interno, V8. Cosa sta succedendo qui?
No, sono in realtà array javascript, con un tipo di "oggetto"! – adeneo
Mentre chrome non mostra '456' nella console,' arr.abc' sarà ancora '456'. Semplicemente non lo mostra nella console a meno che non si acceda esplicitamente alla variabile, o 'console.log (arr)', che registra: '[123, abc: 456]' Fondamentalmente, questo è solo un problema estetico. – Cerbrus
Se è memorizzato in 'abc' non è in realtà una mappa hash. Solo un array chiave/valore. –