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

Posted

技术标签:

【中文标题】尝试使用循环向 Javascript 对象添加多个属性【英文标题】:Trying to add multiple properties to Javascript object using a loop 【发布时间】:2013-04-01 04:26:13 【问题描述】:

我希望你今天一切顺利。

所以我有一个没有属性的对象。我正在尝试使用循环向该对象添加多个属性。添加到循环中的每个属性将根据循环运行的次数多次出现在对象中,每个新属性递增 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;

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

【问题讨论】:

【参考方案1】:

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

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'
]

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

【讨论】:

【参考方案2】:

你可以使用

object['popA'+i]=... 

要创建标准属性或使用 getter/setter 属性,在这种情况下您需要使用

Object.defineProperty(object, *propertyname*, *propertyDescriptor*).  

后者为您提供了有关已创建属性的更多选项。

所有细节都在这里:https://developer.mozilla.org/en-US/docs/javascript/Reference/Global_Objects/Object/defineProperty

【讨论】:

【参考方案3】:

使用数组访问方法设置属性。

myObject =   ;

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

【讨论】:

这也被证明是有用的,我当前项目中的一些对象作为数组组工作得更好。【参考方案4】:

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

   myObject['propa' + i] = foo;

【讨论】:

这确实做到了,非常感谢。

以上是关于尝试使用循环向 Javascript 对象添加多个属性的主要内容,如果未能解决你的问题,请参考以下文章

使用循环为java添加多个对象

多个线程同时向不同步的ArrayList的对象添加元素可能会导致哪些问题?

javascript 集合 - 向集合内对象中的数组添加值

使用带有 JavaScript 的 for 循环时,将新列表项添加到 <ul> 项 [重复]

使用 JavaScript 向 JSON 对象添加新属性(元素)

JavaScript CSS 如何向一个元素添加和删除多个 CSS 类