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
    };
}

(旁注:不要忘记声明i,如果尚未声明,以免成为隐式全局恐怖的牺牲品。)

于 2012-11-01T09:49:17.710 回答
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 回答
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 回答