Valip
Valip

Reputation: 4620

How to push data to a nested Object

How can I push another element to the variables property from the below object?

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

For exaple, I need to add {"variable": "var3", "matchType": "Regex", "value": ".*"} to the variables property from request Object...how can I do this?

for(i=0;i<duplicates.length; i++) {
  var request = {
    "name": duplicates[i].scope,
    "id": 3,
    "rules":[
      {
        "name": duplicates[i].scope + " " + "OP SDR Sync",
        "tags": [
          {
            "tagId": 1,
            "variables":[
              {
              }
            ],
            "condition": false,
          },
          {
            "tagId": 1,
            "condition": false,
          }
        ],
        "ruleSetId": 3,
      }
    ]
  }

  request.rules[0].tags[0].variables[0].push({
    "variable":"var3",
    "matchType": "Regex",
    "value": ".*"
  });
}

Upvotes: 0

Views: 8412

Answers (5)

Avantika Saini
Avantika Saini

Reputation: 792

dot operator(.) can be used to get the value of a particular object property.

square brackets ([]) can be used to access an element of an array.

Now the answer to your question:

request.rules[0].tags[0].variables.push({
"variable": "var3", 
"matchType": "Regex", 
"value": ".*"
});

here, [0] specifies the first element of your array.

Upvotes: 0

Mikel
Mikel

Reputation: 391

Try:

request.rules[0].tags[0].variables.push({
  "variable":"var3",
  "matchType": "Regex",
  "value": ".*"
})

variables is into tags, and tags is into rules.

I edited the answer

Upvotes: 0

Heartz
Heartz

Reputation: 1

request.rules[0].tags.variables[0].push({
  "variable":"var3",
  "matchType": "Regex",
  "value": ".*"
});

You have to navigate in your array. Replace the 0 inside the [] to select the item from the array. (0 is first entry, 1 is second entry etc).

Upvotes: 0

str
str

Reputation: 44979

You have to "navigate" properly in your object:

request.rules[0].tags[0].variables.push({
  "variable":"var3",
  "matchType": "Regex",
  "value": ".*"
})

request['variables'] will just try to find the variables key in root of the request object. This key is simply not defined but is nested in your object/array structure.

Upvotes: 3

Verri
Verri

Reputation: 1608

Try like this:

object = {"variable": "var3", "matchType": "Regex", "value": ".*"};
request.rules[0].tags[0].variables.push(object);

Upvotes: 1

Related Questions