如何将动态对象推入数组?

时间:2012-10-19 17:09:19

标签: javascript arrays object loops dynamic

  

可能重复:
  Javascript expression to define object’s property name?

我正在尝试将对象添加到数组中,但我希望将名称和值设置为动态。这是一个例子:

    (function(){
        var data = [];

        for(i=0; i<5; i++){
            data.push({'name' + i: i});
    }

        console.log(data);
    })()

我想我不能为属性使用变量,所以我不知道该怎么做。

3 个答案:

答案 0 :(得分:9)

如果要使用动态命名属性,则需要使用数组访问表示法:

var temp = {};
temp['name' + i] = i;
data.push(temp);
在IIFE中:
(function(){
    var data,
        temp,
        i;
    data = [];
    for (i = 0; i < 5; i += 1) {
        temp = {};
        temp['name' + i] = i;
        data.push(temp);
    }
    console.log(data);
}());

答案 1 :(得分:5)

修改后的代码:可以使用“[]”在对象中添加基于变量值的键。 jsfiddle

 (function(){
        var data = [], a;

        for(i=0; i<5; i++){
             a = {};
             a['name' + i] = i;
            data.push(a);
    }

        console.log(data);
    })()

答案 2 :(得分:3)

像这样:

for(i=0; i<5; i++){
    var obj = {};
    obj["name" + i] = i;
    data.push(obj);
}

但我想知道你为什么要将索引硬编码到属性名称中。

由于您有一个数组,因此您已拥有关联的索引。它也使该物业难以查找。

如果您需要原始索引的关联,我会使用单独的属性。

for(i=0; i<5; i++){
    data.push({name: i, idx: i});
}