如何在对象中添加对象? JS

时间:2017-01-08 01:46:07

标签: javascript object

我有一个对象..

var $itemConfig;

//...
//code
//...

$itemConfig =
{
    '$prop1' : $value1,
    '$prop2' : $value2,
};

然后我需要在循环内添加一个对象。

for (var o = 0; o < 3; o++)
{
    $itemConfig = {     $oneMoreObj: { [$var1 + o]: $var2 }     };
    // how i can do it? 
    // it should not be replacement.. it should be adding 
}

3 个答案:

答案 0 :(得分:0)

如果在var上使用特殊字符,则需要使用(var {名称中实际接受$

$itemConfig['$newprop'] = { }; // new object

// without special chars you could do
// itemConfig.newprop = { };

var pen = {
  '$prop1': 1,
  '$prop2': 2,
};

var apple = {
  taste: 'awesome',
};

// uuuhg
pen['$apple'] = apple;

console.log(pen);

至于在循环中添加你可以按照我的建议

for (var o = 0; o < 3; o++)
{
    $itemConfig['$propAdded' + o] = {     $oneMoreObj: { [$var1 + o]: $var2 }     };
    // $propAdded0
    // $propAdded1
    // ... it has to be a unique key name
}

答案 1 :(得分:0)

如果您不想更改分配给$itemConfig的值,只需不要在其上调用赋值运算符。

相反,使用点或括号表示法将新成员分配给父对象:

$itemConfig.$oneMoreObj = { $var1: $var2 };

$itemConfig["$oneMoreObj"] = { $var1: $var2 };

答案 2 :(得分:0)

在for循环中,使用Object.assign。它保留了Object的旧属性,并添加了提供给它的新属性。

var $itemConfig;

//...
//code
//...

$itemConfig = {
  '$prop1' : '$value1',
  '$prop2' : '$value2'
};

for (var o = 0; o < 3; o++) {
  Object.assign($itemConfig, { ['$newvar' + o]: '$newvalue' + o } );
};