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]);