3

可能重复:
用于定义对象属性名称的 Javascript 表达式?

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

    (function(){
        var data = [];

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

        console.log(data);
    })()

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

4

3 回答 3

11

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

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);
}());
于 2012-10-19T17:11:23.760 回答
5

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

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

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

        console.log(data);
    })()
于 2012-10-19T17:11:40.110 回答
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});
}
于 2012-10-19T17:11:23.680 回答