2016-03-21 14 views
1

ile değiştirin. SelectedCIID değerini değişkendeyken değiştirmek istiyorum. JS for döngüsünü kullanarak itreti yapabilirim.lodash anahtar değerini bulun ve benim değişkeme göre JSON

Ancak verimli sonuç için lodash kullanmak istiyorum.

JSON:

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

yardım edin.

+0

, "target'leri" her zaman bir öğe dizisidir? – isvforall

cevap

0

Düz javascript kullanarak sorununuzu lodash olmadan verimli çözebilir çünkü: json senin karmaşık yapısının

var json = { "rows": [{ "title": " row 1", "panels": [{ "targets": [{ "selectedCIID": "5856742957ce424b8db6cfb309b6b013", "series": "" }] }] }, { "title": "row 2", "panels": [{ "targets": [{ "selectedCIID": "5856742957ce424b8db6cfb309b6b013", "series": "" }] }, { "targets": [{ "selectedCIID": "5856742957ce424b8db6cfb309b6b013", "series": "" }] }] }] }; 
 
var newValue = "55555"; 
 

 
json.rows.forEach(a => a.panels.forEach(
 
    b => b.targets.forEach(c => c.selectedCIID = newValue))); 
 

 
document.write('<pre>' + JSON.stringify(json, 0, 2)+ '</pre>');

0

Onun çok kısa değil.

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

var transformedData = _.each(data.rows, function(row) { 
    _.each(row.panels, function(panel) { 
    _.each(panel.targets, function(target) { 
     target.selectedCIID = 'new value'; 
    }); 
    }); 
}); 

console.log(transformedData); 

İşte benim için _.forIn ve çalışma kullanılan jsfiddle

0

olduğunu.

var dashboard = results.dashboard; 
      var dashboardJson = angular.fromJson(dashboard); 
      if(ciid.length > 1) { 
      _.forIn(dashboardJson.rows, function(value0) { 
       _.forIn(value0.panels, function(value1) { 
       _.forIn(value1.targets, function(value2) { 
        value2.selectedCIID = ciid; 
       }); 
       }); 
      }); 
      } 
İlgili konular