尝试使用循环向 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 对象添加多个属性的主要内容,如果未能解决你的问题,请参考以下文章
多个线程同时向不同步的ArrayList的对象添加元素可能会导致哪些问题?
使用带有 JavaScript 的 for 循环时,将新列表项添加到 <ul> 项 [重复]