two read multidimensional example dimensional crear array javascript jquery arrays multidimensional-array

javascript - read - jQuery Multidimensional Array(clave dinámica)-No se puede establecer la propiedad de indefinido



javascript multidimensional array undefined (2)

Gracias Chad por su solución, sin embargo, ahora parece borrar los valores de la matriz, aquí hay un foreach en el registro de la consola que muestra mi situación (seguido del código actualizado para la función de actualización):

timer.html:60 ------------------------------------ timer.html:57 0 timer.html:58 undefined timer.html:57 1 timer.html:58 1.910 2timer.html:60 ------------------------------------ timer.html:57 0 timer.html:58 undefined timer.html:57 1 timer.html:58 undefined timer.html:57 2 timer.html:58 1.727 2timer.html:60 ------------------------------------ timer.html:57 0 timer.html:58 undefined timer.html:57 1 timer.html:58 undefined timer.html:57 2 timer.html:58 undefined timer.html:57 3 timer.html:58 0.690 timer.html:60 ------------------------------------

==========================================

function updateLap(kartId){ if (isNaN(driverLapNumber[kartId])) { //IF LAP NOT SET THEN THE KART ID NEEDS TO BE SET AS 0 AS IT IS THE START OF THE RACE window.driverLapNumber[kartId] = 0; } //ADD ONE LAP TO THE KART ID driverLapNumber[kartId]++; //ADD LAP TIME FOR CURRENT LAP NUMBER driverLapTimes[kartId] = []; driverLapTimes[kartId][driverLapNumber[kartId]] = window.lapTime; $.each(driverLapTimes , function( index, obj ) { $.each(obj, function( key, value ) { console.log(key); console.log(value); }); console.log("------------------------------------"); }); $(".lapTimes").prepend("kartId: "+kartId+" - "+window.lapTime+"<br>"); }

Supongo que puedo culpar a PHP por esto, ya que sería posible con la forma en que lo estoy escribiendo actualmente. Necesito ayuda para corregir esto, por favor.

Todo está bien excepto por la driverLapTimes clave del array driverLapTimes , quiero que muestre algo como:

driverLapNumber[999][1] = 6.666; driverLapNumber[999][2] = 6.666; driverLapNumber[999][3] = 6.666; driverLapNumber[999][4] = 6.666;

Pero las claves 1,2,3,4 están generando el siguiente error de consola:

Unkeught TypeError: no se puede establecer la propiedad ''1'' de indefinido

El código de función:

function updateLap(kartId){ if (isNaN(driverLapNumber[kartId])) { window.driverLapNumber[kartId] = 0; } //ADD ONE LAP TO THE KART ID driverLapNumber[kartId]++; //ADD LAP TIME FOR CURRENT LAP NUMBER driverLapTimes[kartId][driverLapNumber[kartId]] = window.lapTime; }


En este caso, es probable que el elemento de la matriz no haya sido declarado como una nueva matriz. Prueba esto:

function updateLap(kartId){ if (isNaN(driverLapNumber[kartId])) { window.driverLapNumber[kartId] = 0; } //ADD ONE LAP TO THE KART ID driverLapNumber[kartId]++; //ADD LAP TIME FOR CURRENT LAP NUMBER if(!driverLapTimes[kartId]){ driverLapTimes[kartId] = []; } driverLapTimes[kartId][driverLapNumber[kartId]] = window.lapTime; }

Por supuesto, siempre puedes poner la declaración fuera de este bucle creando un método para construir tu matriz de antemano.


Prueba lo siguiente y házmelo saber

var a = new Array(); a[0]= new Array(); a[0].push(1); a[0].push(2); a[0].push(3); console.log(a[0][0]); console.log(a[0][1]); console.log(a[0][2]);