2016-11-02 6 views
2

属性値を取得しています。私は多次元配列に設定する必要がありますが、エラーを表示しています。どこが間違っているの?あなたはそれにプロパティを設定する前に、まずこのオブジェクトを初期化する必要があるためjquery多次元配列を設定

var myArray = []; 
amount=10; 
x=1 
$(id).closest('td').nextAll().find('input').each(function (n) { 

     myArray[x]['id'] = $(this).attr('data-id'); 
     myArray[x]['year'] = $(this).attr('data-year'); 
     myArray[x]['month'] = $(this).attr('data-month'); 
     myArray[x]['amount'] = amount; 

     x++; 
}); 
console.log(myArray); 
+1

[X] [「キー」] myarrayのを使用して、キーを更新するように明示的に、空のオブジェクトを割り当てる必要がある[それを介して2次元配列とループを作成しますjquery](http://stackoverflow.com/questions/26140640/create-two-dimensional-array-and-loop-through-it-in-jquery) –

答えて

1

あなたはこのライン

myArray[x]['id'] = $(this).attr('data-id'); 

前にこのライン

myArray[x] = {}; 

が欠落しています。

0

アイテムを追加するには、まず配列を宣言する必要があります。たとえば

var d = []; 
var value = 2; 
d[0]["key"] = value; 

d[0]はまだ配列ではないため、機能しません。しかし:d[0]キーを受け入れる準備ができているので

var d = []; 
var value = 2; 
d[0]= []; 
d[0]["key"] = value; 

は、動作します。

あなたの場合、

>>> myArray[x] = []; 
myArray[x]['id'] = $(this).attr('data-id'); 
myArray[x]['year'] = $(this).attr('data-year'); 
myArray[x]['month'] = $(this).attr('data-month'); 
myArray[x]['amount'] = amount; 

となります。

0

配列を空の配列として初期化していても、値を初期位置に設定する必要があります。あなたが指定しないと、myArray [x]は定義されていません。だから、あなたはの可能性のある重複

var myArray = []; 
 
amount = 10; 
 
x = 1 
 
$(id).closest('td').nextAll().find('input').each(function(n) { 
 
    //Need to initialize with an object a location x; 
 
    myArray[x] = {}; 
 
    myArray[x]['id'] = $(this).attr('data-id'); 
 
    myArray[x]['year'] = $(this).attr('data-year'); 
 
    myArray[x]['month'] = $(this).attr('data-month'); 
 
    myArray[x]['amount'] = amount; 
 

 
    x++; 
 
}); 
 
console.log(myArray);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>