尝试使用循环向Javascript对象添加多个属性

Jon*_*ist 12 javascript loops properties object

我希望那一天能找到你.

所以我有一个没有属性的对象.我正在尝试使用循环向此对象添加多个属性.添加到循环中的每个属性将多次出现在对象中,具体取决于循环运行的次数,每个新属性递增1.

所以我有这样的事情:

myObject = {  };

for(i = 0; i < 2; i++){
    myObject.propA + i = foo;
    myObject.propB + i = bar;
};
Run Code Online (Sandbox Code Playgroud)

我希望得到这样的东西:

myObject.propA0 = foo;
myObject.propB0 = bar;
myObject.propA1 = foo;
myObject.propB2 = bar;
Run Code Online (Sandbox Code Playgroud)

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

Tom*_*yBs 22

尝试使用方括号表示法来表示名称

   myObject['propa' + i] = foo;
Run Code Online (Sandbox Code Playgroud)


bfa*_*tto 12

正如其他用户所说,你必须使用括号表示法来通过名称字符串来引用属性:

myObject['propA' + i] = 'foo';
Run Code Online (Sandbox Code Playgroud)

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

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

这应该产生:

[
    { propA: 'foo', propB: 'bar'},
    { propA: 'foo', propB: 'bar'}
]
Run Code Online (Sandbox Code Playgroud)

在我看来,它看起来更干净.


Chr*_*son 5

使用array-access方法设置属性.

myObject = {  };

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