Ogni oggetto in JavaScript è implementato come un hash dell'oggetto, quindi non c'è alcuna differenza funzionale.
Ad esempio, controlla questo test:
var arr = [];
arr[5] = 5;
arr['5'] = 'not 5';
console.log(arr.length, arr);
// output: 6 [undefined, undefined, undefined, undefined, undefined, "not 5"]
numeri sono stringata quando usato come posizioni.
Vedere Crockford's website su JavaScript per ulteriori informazioni. La parte particolarmente importante è sotto la voce "array":
Arrays in JavaScript are also hashtable objects.
prestazioni non è davvero un problema a meno che non si dispone di una tonnellata di oggetti per tenere traccia di (come 500.000+), nel qual caso si' probabilmente stai facendo qualcosa di sbagliato.
Ci sono ottimizzazioni che puoi fare, ma non hanno senso se non stai facendo qualcosa di innaturale con JavaScript (come gli algoritmi di compressione ... ho lavorato su un'implementazione LZMA in JS ... cattiva idea).
Nota:
Se si dispone di un set di ricambio (come si definisce solo 10 indici su 10.000), probabilmente si dovrebbe essere utilizzando un oggetto normale. Gli array inizializzeranno tutti i 10.000 indici su "non definito", mentre lo Object.keys(obj)
segnalerà solo il 10 che hai impostato. Questa è un'ottimizzazione minore che in realtà ha senso.
Che cosa ti ha detto la ricerca che hai fatto da solo su una di queste domande? –
Non voglio fare molte ricerche da solo su qualcosa che a) Probabilmente mi sbaglierò comunque eb) È molto probabile che sia stato già fatto da qualcuno più esperto sull'argomento di me. Aggiornamento – hugomg
: [C'è qualcosa che garantisce il tempo costante per accedere a una proprietà di un oggetto in JavaScript?] (Http://stackoverflow.com/q/34292087/1048572) – Bergi