如何在循环中动态创建Javascript对象?

时间:2013-12-19 13:57:31

标签: javascript

我循环遍历数组response,我想将一些值放入对象data,但我的方法不起作用("数据[i]未定义")。

var data = {},
    i = 0;

$(response).each(function(){
    data[i].title = response.title; // This does not work
    data[i].id = response.id;
    i++;
}

我希望生成的对象data看起来像这样:

{
    0: {
          title: "First title",
          id: "First id"
       },

    1: {
          title: "Second title",
          id: "Second id"
       },
}

我怎样才能做到这一点?

3 个答案:

答案 0 :(得分:1)

您没有引用响应的每个索引,而是引用数组/对象的属性

$(response).each(function(index){
    data[i].title = response[index].title; 
    data[i].id = response[index].id;
    i++;
});

答案 1 :(得分:1)

尝试:

var data = {},
    i = 0;

$(response).each(function(){
    data[i] = {}; // Initialize an object first before assigning values: data[i] = {};.
    data[i].title = this.title; //Use this instead of response
    data[i].id = this.id;
    i++;
});

答案 2 :(得分:0)

试试:

var data = [];

$(response).each(function(index, element){
    data.push({
        title: element.title,
        id:    element.id
    });
}

此代码段将创建一个包含对象的数组,因此您可以使用以下命令访问它们:

data[0]; // [1], [2] ...