如何将新属性附加到JS对象

时间:2016-07-01 08:34:09

标签: javascript

这是我的JS对象:

  var request = {
    "name": "Name",
    "id": 3,
    "rules":[
      {
        "name": "Rule name",
        "tags": [
          {
            "tagId": 1,
            "variables":[
              {
                "variable": "var1",
                "matchType": "Regex"
              }
            ],
            "condition": false,
          }
        ],
        "ruleSetId": 3,
      }
    ]
  }

如何向"value": "some value"个对象添加新属性variables?例如,在我添加此属性后,该对象应如下所示:

  var request = {
    "name": "Name",
    "id": 3,
    "rules":[
      {
        "name": "Rule name",
        "tags": [
          {
            "tagId": 1,
            "variables":[
              {
                "variable": "var1",
                "matchType": "Regex",
                "value": "some value"   <----------
              }
            ],
            "condition": false,
          }
        ],
        "ruleSetId": 3,
      }
    ]
  }

我尝试了以下操作,但它为我添加了一个仅包含{"value": "some value"}的其他对象:

  request.rules[0].tags[0].variables.push({
    "value": "some value"
  });

8 个答案:

答案 0 :(得分:2)

request.rules[0].tags[0].variables[0].value = "some value";

或者,如果要在所有变量中附加此新属性:

var target = 'value';

for (var i = 0; i < request.rules[0].tags[0].variables.length; i++) { 
  if (request.rules[0].tags[0].variables[i][target]) { 
    break;
  }
}

request.rules[0].tags[0].variables[i][target] = "some value";

答案 1 :(得分:0)

喜欢这个吗?

request.rules[0].tags[0].variables[0].value = "some value";

答案 2 :(得分:0)

0用于选择数组的索引。

希望这会有用

var _pushKey = request.rules[0].tags[0].variables[0].value="some value" 

JSFIDDLE

答案 3 :(得分:0)

您可以这样写:

request.rules [0] .tags [0] .variables [0] [&#34; value&#34;] =&#34;某些值&#34 ;;

答案 4 :(得分:0)

request.rules[0].tags[0].variables[0].value = "some value";

如果你想理解为什么它会像那样工作那么你必须得到{}[]在json中的含义。第一个用于对象,后来用于数组。因此,您可以看到您的request对象具有名为rules的属性,该属性是一个对象数组。 tagsvariables属性与rules相同。最后你需要在variables数组中为第一个obj分配新的键值,这就是使用变量[0]的原因。

答案 5 :(得分:0)

你应该这样做。

request.rules[0].tags[0].variables[0]['value'] = 'some value';

您想要添加属性的对象位于数组中,它是数组的第一个元素。你可以通过request.rules[0].tags[0].variables[0]来实现这个目标。

答案 6 :(得分:0)

示例:

var jsonObj = {
members: 
       {
        host: "hostName"
    }
}
var i;
for(i=4; i<=8; i++){
    var newUser = "user" + i;
    var newValue = "value" + i;
    jsonObj.members[newUser] = newValue ;
}
var str =JSON.stringify(jsonObj);
console.log(str);
console.log(jsonObj);
在您的情况下

:request.rules [0] .tags [0] .variables [value] ='some value';

答案 7 :(得分:-1)

你几乎就在那里。

request.rules[0].tags[1].variables['value'] = 'some value';