2016-05-10 5 views
0

2次元配列に新しい列をプッシュする:は動的に私が動的に次のコードではjQueryを使用して2次元配列に新しい値を追加しようとしている

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すべてがOKですが、インクリメントした後、それが与えるです私にはエラーがあります: "未定義はオブジェクトではありません"。

要素が動的に追加される[['1','2'],['3','4']]のようなものを作成する必要があります。誰でも助けてくれますか?ありがとう。

答えて

2

あります。空の配列に要素を初期化することができます。

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

インデックス0のみが配列を持つためです。

配列自体ではないインデックスにはプッシュできません。

ちょうどその最初にアレイを押し、空の配列で開始:indexがゼロでない場合、配列の要素がundefinedあるためである

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

第5行はdisabledTime.pushする必要があります([] ); – Dalibor

0

あなたの配列です[[]]それが定義されていない他のすべてのインデックスで0と で空の配列が含まれている意味

basicly行いますarray[index] = []