2016-06-29 5 views
0

Как я могу нажать другой элемент в свойство variables из объекта ниже?Как перенести данные в вложенный объект

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, 
     } 
    ] 
    } 

Для exaple, мне нужно добавить {"variable": "var3", "matchType": "Regex", "value": ".*"} к variables собственности от request объекта ... Как я могу это сделать?

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": ".*" 
    }); 
} 

ответ

3

Вы должны «перемещаться» должным образом в вашем объекте:

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

request['variables'] просто попытаться найти variables ключ в корне request объекта. Этот ключ просто не определен, но вложен в структуру вашего объекта/массива.

+0

Пожалуйста, проверьте мой обновленный вопрос, я получаю 'Ошибка: не могу прочитать свойство« 0 »из undefined.' ... есть что-то не так с моим кодом? – Valip

+0

@PavelValeriu Да. 'tags' - это массив, поэтому вы должны использовать' request.rules [0] .tags [0] .variables'. Также обратите внимание, что 'variables' - это массив, на который вы хотите нажать, поэтому не используйте' [0] 'там. – str

+0

Теперь он меня бросает. Ошибка: не удается найти функцию push в объекте [object Object] .' – Valip

1

Попробуйте так:

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

Try:

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

variables находится в tags и tags находится в rules.

Я редактировал ответ

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

Вы должны перемещаться в своем массиве. Замените 0 внутри [], чтобы выбрать элемент из массива. (0 - первая запись, 1 - вторая запись и т. Д.).

0

Оператор точки (.) Может использоваться для получения значения определенного свойства объекта.

Квадратные скобки ([]) могут использоваться для доступа к элементу массива.

Теперь ответ на Ваш вопрос:

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

здесь, [0] указывает первый элемент вашего массива.

Смежные вопросы