Reputation: 5803
I want to replace the values of selectedCIID with my variable. I can do the itreting using JS for loop.
But I want to use lodash for efficient result.
JSON:
{
"rows": [{
"title": " row 1",
"panels": [{
"targets": [{
"selectedCIID": "5856742957ce424b8db6cfb309b6b013",
"series": ""
}]
}]
}, {
"title": "row 2",
"panels": [{
"targets": [{
"selectedCIID": "5856742957ce424b8db6cfb309b6b013",
"series": ""
}]
}, {
"targets": [{
"selectedCIID": "5856742957ce424b8db6cfb309b6b013",
"series": ""
}]
}]
}]
}
Please help.
Upvotes: 1
Views: 1029
Reputation: 5803
I used _.forIn and its working for me.
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;
});
});
});
}
Upvotes: 0
Reputation: 8926
You can solve your problem efficiently without lodash
, using plain javascript:
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>');
Upvotes: 1
Reputation: 6078
Its not very short because of complicated structure of you json.
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);
Here is jsfiddle
Upvotes: 0