Попытка добавить несколько свойств в объект 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;
давать славный стог объекты, созданные на лету, в зависимости от того, сколько раз выполняется цикл. Но я, кажется,не понимаю. Итак, как именно я могу передать переменную из цикла в свойство при ее создании и назначении?
4 ответов
как говорили другие пользователи, Вы должны использовать скобки, чтобы ссылаться на свойства по их строкам имен:
myObject['propA' + i] = 'foo';
но почему вы не используете массив объектов вместо одного объекта с похожими, пронумерованными именами свойств? Что-то вроде этого:--4-->
var myArray = [];
for(i = 0; i < 2; i++){
myArray.push({
propA: 'foo',
propB: 'bar'
});
};
Это следует производить:
[
{ propA: 'foo', propB: 'bar'},
{ propA: 'foo', propB: 'bar'}
]
это выглядит чище, на мой взгляд.
используйте метод array-access для установки свойств.
myObject = { };
for(i = 0; i < 2; i++){
myObject['propA' + i] = foo;
myObject['propB' + i] = bar;
};
можно использовать
object['popA'+i]=...
чтобы создать стандартное свойство или использовать свойство getter / setter, в этом случае вам нужно использовать
Object.defineProperty(object, *propertyname*, *propertyDescriptor*).
Последнее дает вам больше возможностей для созданного свойства.
все подробности здесь :
https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Object/defineProperty