1

こんにちは、私は次のような JavaScript オブジェクトを作成しようとしています。

data = { values:[
        { X: "Apples", Y: 120 },
        { X: "Oranges", Y: 280 },
        { X: "Chocolates", Y: 180 },
        { X: "Bananas", Y: 340 },
        { X: "Tomatoes", Y: 400 },
]};

これを試してみましたが、うまくいきませんか?

var data = {};

for (i = 0; i < json.Answers.length; i++){
    data.values[i].X = json.Answers[i].AnswerText
    data.values[i].Y = json.Answers[i].Responses.length
    }

json 部分は問題ありません。オブジェクトの構築に関するアイデアはありますか?

4

4 に答える 4

8

まず、定義したことのない のvaluesプロパティを使用しようとしています。data変化する

var data = {};

var data = {values: []};

それはvalues配列を作成します。

また、あなたのループでは、存在しないオブジェクトに代入しようとしています。ループの内容を次のように変更します。

data.values[i] = {
    X: json.Answers[i].AnswerText,
    Y: json.Answers[i].Responses.length
};

これにより、配列を構築するときに配列に入る各オブジェクトが作成valuesされます。

そう:

var data = {values: []};

for (i = 0; i < json.Answers.length; i++){
    data.values[i] = {
        X: json.Answers[i].AnswerText,
        Y: json.Answers[i].Responses.length
    };
}

(補足: The Horror of Implicit Globals のi餌食にならないように、まだ宣言されていない場合は、宣言することを忘れないでください。)

于 2012-11-01T09:49:17.710 に答える
1

試す:

var data = {values:[]};

for (i = 0; i < json.Answers.length; i++){
    data.values[i]= {X: json.Answers[i].AnswerText, Y:json.Answers[i].Responses.length}
}
于 2012-11-01T09:51:18.973 に答える
1

を使用して初期化してくださいdata:

data = {values: []};
于 2012-11-01T09:50:19.150 に答える
1
data.values = [];

for (i = 0; i < json.Answers.length; i++) {
    data.values.push({X: json.Answers[i].AnswerText, Y: json.Answers[i].Responses.length});
}
于 2012-11-01T09:50:57.050 に答える