0

I am trying to create a json object similar to the below:

[
{

    "name":"aaa_aaaurf",
    "region":"F&R",
    "checkins":[[1,0],[2,0],[3,0],[4,3],[5,0],[6,0],[7,0],[8,3],[9,0],[10,0],[11,0],[12,0]],
    "teamsize":[[1,0],[2,0],[3,0],[4,3],[5,0],[6,0],[7,0],[8,1],[9,0],[10,0],[11,0],[12,0]],
    "Checkintimes":[[1,0],[2,0],[3,0],[4,184],[5,0],[6,0],[7,0],[8,0],[9,0],[10,0],[11,0],[12,0]]
},
{

    "name":"aaa_accessservices",
    "region":"F&R",
    "checkins":[[1,0],[2,0],[3,0],[4,0],[5,0],[6,0],[7,0],[8,0],[9,0],[10,0],[11,27],[12,12]],
    "teamsize":[[1,0],[2,0],[3,0],[4,0],[5,0],[6,0],[7,0],[8,0],[9,0],[10,0],[11,11],[12,11]],
    "Checkintimes":[[1,0],[2,0],[3,0],[4,0],[5,0],[6,0],[7,0],[8,0],[9,0],[10,0],[11,10],[12,12]]
}]

I have written the script using d3 but the object is getting overwritten with the latest one.How to merge the object array to get the json?

Following is the code:

 var dataset;
var teamsize={};
var repository;
var sbu;
var index=0;

var teamsizearray = [];
var checkinsarray = [];
var checkintimesarray = [];


var ConsData = {};
var MergeData = {};
var tempData={};
 d3.csv("bubblechart.csv", function(data, error) {

      dataset = data;
      alert(dataset.length);
    //alert(error);

      for(var x=0;x<dataset.length;x++)
    {
        if (x==0)
        {
            repository = dataset[0].repository;
        }

      if (dataset[x].repository!= repository)
      {
        if ((x > 0 ) || (x==dataset.length))
        {
            index = 1;
                ConsData["name"] = repository;
            ConsData["region"] = sbu;
            ConsData["checkins"] = checkinsarray;
            ConsData["teamsize"] = teamsizearray;
            ConsData["Checkintimes"] = checkintimesarray;
                  tempData=ConsData;

                  jQuery.extend(MergeData, tempData);


            teamsizearray = [];
            checkinsarray = [];
            checkintimesarray = [];

            repository = dataset[x].repository;
                sbu = dataset[x].BusinessUnit
            checkinsarray.push([index, dataset[x].AvgCheckinCount]);
            teamsizearray.push([index, dataset[x].TeamSize]);
            checkintimesarray.push([index, dataset[x].MeanBuildTimeHrs]);
        }            

    }
    else
    {
        if (x ==0) 
        {
            index=1;
        }
        else
        {
            index=index+1;
        }

        repository = dataset[x].repository;
            sbu = dataset[x].BusinessUnit
        checkinsarray.push([index, dataset[x].AvgCheckinCount]);
        teamsizearray.push([index, dataset[x].TeamSize]);
        checkintimesarray.push([index, dataset[x].MeanBuildTimeHrs]);
    }

}


console.log(JSON.stringify(MergeData));

 });

Following is the the csv data.

aaa_aaaurf,1,2013,0,0,0,Financial&Risk
aaa_aaaurf,2,2013,0,0,0,Financial&Risk
aaa_aaaurf,3,2013,0,0,0,Financial&Risk
cCG_tzz,1,2013,5,3,100,Financial&Risk
cCG_tzz,2,2013,8,5,80,Financial&Risk
aCG_txz,1,2013,12,3,70,Financial&Risk
GCG_txz,1,2013,21,3,50,Financial&Risk
GCG_txz,2,2013,12,3,70,Financial&Risk

1 Answer 1

1

Can you use lodash?

var names = {
  'characters': [
    { 'name': 'barney' },
    { 'name': 'fred' }
  ]
};

var ages = {
  'characters': [
    { 'age': 36 },
    { 'age': 40 }
  ]
};

_.merge(names, ages);
// → { 'characters': [{ 'name': 'barney', 'age': 36 }, { 'name': 'fred', 'age': 40 }] }

var food = {
  'fruits': ['apple'],
  'vegetables': ['beet']
};

var otherFood = {
  'fruits': ['banana'],
  'vegetables': ['carrot']
};

_.merge(food, otherFood, function(a, b) {
  return _.isArray(a) ? a.concat(b) : undefined;
});
// → { 'fruits': ['apple', 'banana'], 'vegetables': ['beet', 'carrot] }
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.