可能重复:
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);
})()
我想我不能为属性使用变量,所以我不知道该怎么做。
答案 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});
}