Der richtige Weg zu tun, was Sie würden wollen:
var array = [[[new Date()]]];
jedoch das resultierende mehrdimensionales Array wird nicht genau 30 Elemente auf der dritten Dimension und 1 auf dem zweiten, wie Sie in Ihrem ursprünglichen hatten Code. Nicht sicher, ob das ein Problem für dich sein wird.
Wenn Sie das tun myArray[30][1][0]
, versucht JavaScript Element für den Zugriff auf 30 im Array myArray
, aber da myArray
Variable noch nicht zu irgendetwas initialisiert wurde, wird der Wert undefined
hat. So Ihr Code entspricht mit:
var myArray;
myArray[30] = new Date();
Dieser Code wird Cannot set property '30' of undefined
den Fehler zu erteilen.
Edit: Wenn Sie sicher, dass vor dem Array existiert machen wollen Werte zuweisen und vermeiden vorhandene Werte überschreiben, die eleganteste Art, wie ich denken kann ist:
// Store a value in the array, at index (posX, posY, posZ), only if
// that position in the array is currently empty
function storeDateNoOverride(theArray, posX, posY, posZ, date) {
var theArray = theArray || [];
theArray[posX] = theArray[posX] || [];
theArray[posX][posY] = theArray[posX][posY] || [];
theArray[posX][posY][posZ] = theArray[posX][posY][posZ] || date;
}
// If variable theArray doesn't have a value yet, assign it to a new array
var theArray = theArray || [];
storeDateNoOverride(theArray, 30, 1, 0, new Date());
Warum versuchen Sie, einem mehrdimensionalen Array ein Datum zuzuweisen? –
Kurze Antwort: Weil ich Hunderte von Daten auf einem NodeJs-Back-End verwalte, die als JSON an das Frontend und dann zurück an den NodeJS-Server gesendet werden müssen. – Emilio