2

次の構造が必要です。

    {
     "1":[
        {"name":"John","Age":"21"}
      ]
     "2":[
        {"name":"Jone","Age":"22"}
      ]
    }

オブジェクトを動的に追加したい.これは私が試したものです:

    var i = 0;
    var data= [{i:{}}]; 
    function add(){
      data= [{i:{}}];
      data.i.push({
        "name":"Zack",
        "age":22
      });
      i++;
    }

undefined のメソッド 'push' を呼び出せません」というエラーが表示されました

4

3 に答える 3

4
  1. プロパティに動的にアクセスするには、ブラケット表記を使用します。変数data= [{i:{}}]を定義したばかりの事実を使用しません。i

  2. 関数では、 の外部値を置き換えていますdata

あなたが望むものはおそらくもっと簡単です:

var i = 0;
var data= {};
function add(){
  data[i] = data[i]||[];
  data[i].push({
    "name":"Zack",
    "age":22
  });
  i++;
}

この MDN ドキュメントの詳細:オブジェクトの操作

于 2013-06-27T07:02:06.280 に答える
0

dataとして宣言することにより[{i:{}}]、取得する構造は実際には

[
    {
        i: {
        }
    }
]

これはあなたが望んでいたものではなく、アクセスできない理由ですdata.idata配列であるため)。

as として宣言してから、ブラケット表記 as でdataアクセス{i:{}}する必要があります。idata[i]

また、data[i]は配列で.pushはないため、どちらも機能しないため、 のようなものを使用する必要がありますdata[i] = {"name": "Raibaz", "age": 30}

于 2013-06-27T07:06:36.470 に答える
0

Javascript では、次の構文を使用して多次元配列が作成されます

var mArray = [[1, 2], [3, 4], [5, 6], [7, 8], [9, 10]];

mArray[0][0] gives 1
mArray[0][1] gives 2
mArray[1][0] gives 3
mArray[1][1] gives 4

以下のように多次元配列を初期化できます

var i = 0;
var data= []; 

作成しようとしているのは、配列のオブジェクトです。その場合、構文は(コードのように)

var mObject = {
 "1":[
    {"name":"John","Age":"21"}
  ]
 "2":[
    {"name":"Jone","Age":"22"}
  ]
};

以下のようにオブジェクトを初期化できます

var i = 1;
var data= {}; 

どちらの場合も、関数は以下のように記述できます

function add(){
  data[i] = data[i] || []; // initializes array if it is undefined
  data[i].push({
    "name":"Zack",
    "age":22
  });
  i++;
}
于 2013-06-27T07:10:08.370 に答える