如何创建这样的javascript对象?

Joe*_*Joe 1 javascript

嗨伙计们,我正在尝试创建一个这样的javascript对象:

data = { values:[
        { X: "Apples", Y: 120 },
        { X: "Oranges", Y: 280 },
        { X: "Chocolates", Y: 180 },
        { X: "Bananas", Y: 340 },
        { X: "Tomatoes", Y: 400 },
]};
Run Code Online (Sandbox Code Playgroud)

我试过这个,但它不起作用?

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
    }
Run Code Online (Sandbox Code Playgroud)

json部分很好,有关构建对象的任何想法吗?

T.J*_*der 8

首先,你要使用values的属性data,你从来没有定义.更改

var data = {};
Run Code Online (Sandbox Code Playgroud)

var data = {values: []};
Run Code Online (Sandbox Code Playgroud)

这会创建values数组.

此外,在循环中,您尝试分配不存在的对象.将循环的内容更改为:

data.values[i] = {
    X: json.Answers[i].AnswerText,
    Y: json.Answers[i].Responses.length
};
Run Code Online (Sandbox Code Playgroud)

这会在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
    };
}
Run Code Online (Sandbox Code Playgroud)

(旁注:i如果尚未宣布,请不要忘记宣布,以免你成为隐形全球恐怖的牺牲品.)