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

Dynamically push new column in 2D array

本文关键字:新列 动态 2D 数组      更新时间:2023-09-26

我正在尝试使用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时,一切都可以,但递增后会出现错误:"未定义不是对象"。

我需要创建类似[['1','2'],['3','4']]的东西,其中元素是动态添加的。有人能帮我吗?谢谢

这是因为当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());
});

这是因为只有索引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());

您的数组是[[]],这意味着它在0处包含一个空数组,并且在所有其他索引中,它都是未定义的

基本操作:array[index] = []