FrontEnd Expert
FrontEnd Expert

Reputation: 5803

lodash find the key value and replace with my variable from JSON

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

Answers (3)

FrontEnd Expert
FrontEnd Expert

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

isvforall
isvforall

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

Dmitriy Nevzorov
Dmitriy Nevzorov

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

Related Questions