Estoy tratando de agregar nuevos valores en una matriz 2D dinámicamente usando jQuery con el siguiente código:

var disabledTime = [[]];
var index = 0;

$("#addTimeSlot").click(function(){ 
    // do some stuff here...
    disabledTime[index].push($('.slotTime').last().prev().val());
    disabledTime[index].push($('.slotTime').last().val());
}

Cuando index es 0 todo está bien, pero después de incrementarlo me da un error: "indefinido no es un objeto".

Necesito crear algo como [['1','2'],['3','4']] donde los elementos se agregan dinámicamente. ¿Alguien puede ayudarme? Gracias.

0
Dmitry Pekach 10 may. 2016 a las 17:44

3 respuestas

La mejor respuesta

Esto se debe a que cuando index no es cero, el elemento en la matriz es undefined. Inicializar el elemento para vaciar la matriz funcionará.

var disabledTime = [[]];
var index = 0;

$("#addTimeSlot").click(function () {
    //do some stuff here...

    // Check if the element at `index` is not undefined.
    if (disabledTime[index] === undefined) {

        // Initialize to empty array.
        disabledTime[index] = [];
    }

    disabledTime[index].push($('.slotTime').last().prev().val());
    disabledTime[index].push($('.slotTime').last().val());
});
2
Tushar 10 may. 2016 a las 14:47

Su matriz es [[]] lo que significa que contiene una matriz vacía en 0 y en todos los demás índices no está definido

Básicamente hacer: array[index] = []

0
Rory McCrossan 10 may. 2016 a las 14:50

Esto se debe a que solo el índice 0 tiene una matriz.

No puede empujar a un índice que no sea una matriz en sí.

Simplemente comience con una matriz vacía, luego empuje una matriz a eso primero:

var disabledTime=[];
    var index = 0;
    $("#addTimeSlot").click(function(){ 
    //do some stuff here...
 disabledTime.push([]);
 disabledTime[index].push($('.slotTime').last().prev().val());
 disabledTime[index].push($('.slotTime').last().val());
1
Jamiec 10 may. 2016 a las 14:50