2013-04-09 68 views
7

我希望这一天能找到你。尝试使用循环向JavaScript对象添加多个属性

所以我有一个没有任何属性的对象。我试图使用循环向该对象添加多个属性。加入到循环每个属性都将出现在对象多次取决于有多少次的循环运行,由1

递增每一个新的属性,因此我有这样的事情:

myObject = { }; 

for(i = 0; i < 2; i++){ 
    myObject.propA + i = foo; 
    myObject.propB + i = bar; 
}; 

我哪想要产生这样的结果:

myObject.propA0 = foo; 
myObject.propB0 = bar; 
myObject.propA1 = foo; 
myObject.propB2 = bar; 

根据循环运行的次数,给出一个很好的对象生成堆栈。但我似乎没有得到这个。那么在创建和分配时,如何将循环中的变量提供给属性?

回答

19

尝试使用方括号作为名称

myObject['propa' + i] = foo; 
+0

这实际上做到了,非常感谢。 – 2013-04-11 05:40:12

5

使用阵列的访问的方法来设置的属性。

myObject = { }; 

for(i = 0; i < 2; i++){ 
    myObject['propA' + i] = foo; 
    myObject['propB' + i] = bar; 
}; 
+0

这也证明很有用,我当前项目中的一些对象更适合作为数组使用。 – 2013-04-11 05:41:57

9

至于其他用户说,你必须用括号标记他们的名字字符串引用属性:

myObject['propA' + i] = 'foo'; 

但是你为什么不使用对象数组,而不是具有相似编号属性名称的单个对象?事情是这样的:

var myArray = []; 
for(i = 0; i < 2; i++){ 
    myArray.push({ 
     propA: 'foo', 
     propB: 'bar' 
    }); 
}; 

这将产生:

[ 
    { propA: 'foo', propB: 'bar'}, 
    { propA: 'foo', propB: 'bar'} 
] 

它看起来更清洁的方式,在我看来。

相关问题