动态推送2D数组中的新列

时间:2016-05-10 14:44:38

标签: javascript jquery arrays

我正在尝试使用带有以下代码的jQuery动态地在2D数组中添加新值:

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());
}

index0时一切正常,但在递增后会给我一个错误:“undefined不是对象”。

我需要创建类似[['1','2'],['3','4']]的内容,其中元素是动态添加的。谁能帮我?感谢。

3 个答案:

答案 0 :(得分:2)

这是因为当index不为零时,数组中的元素为undefined。将元素初始化为空数组将起作用。

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());
});

答案 1 :(得分:1)

这是因为只有索引0才有数组。

您无法推送到不是数组本身的索引。

从一个空数组开始,然后将数组推送到第一个数组:

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

答案 2 :(得分:0)

你的数组是[[]],意味着它包含一个0和0的空数组 在所有其他索引中它是未定义的

基本上做:array[index] = []