2016-03-21 2 views
0

Я хочу обновить поле в json. Мое поле selectedCIID это поле внутри какого-либо объекта с некоторой иерархии,Как найти поле объекта и обновить с моей переменной javascript

rows-> panels-> target-> selectedCIId,

var dashboard = results.dashboard; 
    var dashboardJson = angular.fromJson(dashboard); 
    //dashboardJson.rows //dashboardJson.rows[0].panels 
    var j; 
    for(i=0; i<=dashboardJson.rows; i++){ 
    for(j=0;) 
    dashboardJson.rows[i].panels 
    dashboardJson.rows[0].panels[0].targets[0].selectedCIID = ci; 
    //dashboardJson.rows[0].panels[0].targets[0].selectedCIID 
    } 

JSON:

{ 
    "rows": [{ 
     "title": " row 1", 
     "panels": [{ 
      "targets": [{ 
       "selectedCIID": "5856742957ce424b8db6cfb309b6b013", 
       "series": "" 
      }] 
     }] 
    }, { 
     "title": "row 2", 
     "panels": [{ 
      "targets": [{ 
       "selectedCIID": "5856742957ce424b8db6cfb309b6b013", 
       "series": "" 
      }] 
     }, { 
      "targets": [{ 
       "selectedCIID": "5856742957ce424b8db6cfb309b6b013", 
       "series": "" 
      }] 
     }] 
    }] 
} 

Код выше это просто фиктивный код для показа моего подхода. Я могу сделать это, используя собственный JS-код. для цикла.

Но если я могу использовать lodash для итерации этого объекта _each или что-то, все будет хорошо.

Или

Как я могу написать код, чтобы найти selectedCIID внутри панелей, где это поле пришествия обновляются с моим переменным.

Я хочу обновить поле "selectedCIID". Пожалуйста, помогите мне ..

+0

Это нормально только проблема в состоянии ('я <= dashboardJson.rows') удалить равенство' = 'проверить это условие, когда вы начинаете с 0 index not 1; – itzmukeshy7

+0

есть. Я понял. это просто и пример .. можете ли вы предложить мне такой же способ сделать в lodash .. –

+0

Попробуйте это [Пропустить свойства объекта JavaScript с помощью Lodash] (http://stackoverflow.com/questions/21310946/loop-through-properties- in-javascript-object-with-lodash) – itzmukeshy7

ответ

0

Если вы хотите изменить свойство всех targets, то несколько циклов могут это сделать.

var rowI, panelI, targetI, 
    rows, panels, targets, target; 

rows = dashboardJson.rows; 
for (rowI = 0; rowI < rows.length; rowI++) { 
    panels = rows[rowI].panels; 

    for (panelI = 0; panelI < panels.length; panelI++) { 
     targets = panels[panelI].targets; 

     for (targetI = 0; targetI < targets.length; targetI++) { 
      target = targets[targetI]; 
      target.selectedCIID = ci; 
     } 
    } 
} 

Вы можете также добавить некоторые if заявления, в случае, если вы хотите фильтровать желаемый rows, panels, targets

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