Gli array sono "speciali" solo in un paio di modi:
- Hanno alcuni metodi array come interessanti da loro prototipo ("slice()", ecc)
- Hanno un
length
proprietà "magico" che traccia la più grande proprietà "nome" numerico
Se si memorizza qualcosa alla posizione 10.299.123 in un array nuovo di zecca, il runtime non usa tutta la memoria assegnando un vero e proprio, array vuoto. Invece, negozi di tutto ciò che si desidera memorizzare e fa in modo che length
viene aggiornato a 10299124.
Ora il problema specifico con date, se si sta parlando di memorizzare il timestamp, è che (io credo ) hanno' è più grande di numeri interi a 32 bit. Gli indici di matrice sono limitati a quella dimensione. Tuttavia, tutto ciò significa che length
non sarà corretto. Se non si ha realmente a cuore una qualsiasi delle cose serie in ogni caso, allora davvero tutto ciò che serve è un oggetto semplice:
var dateStorage = {};
dateStorage[someDate.getTime()] = "whatever";
JavaScript oggetti possono essere utilizzati come nome-valore mappe fino a quando il nome può essere rappresentato come una stringa (che è chiaramente vero per i numeri).
Questa è stata un'ottima risposta. –
Grazie. Mi piacerebbe una risposta con più aspetti tecnici sull'archiviazione di array in JS. I timestamp Unix sono numeri interi a 32 bit. –
L'argomento dei tipi numerici JavaScript è molto strano e complicato. Il documento standard ECMA è lungo e noioso, ma ha una descrizione abbastanza chiara (se esaurientemente dettagliata) della semantica del linguaggio. Le descrizioni dell'Array in particolare sono, per me, piuttosto semplici. – Pointy