简体   繁体   English

如何使用JavaScript合并对象

[英]How to merge objects using javascript

I am trying to create a json object similar to the below: 我正在尝试创建类似于以下内容的json对象:

[
{

    "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? 我已经使用d3编写了脚本,但是对象被最新的脚本覆盖了。如何合并对象数组以获取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. 以下是csv数据。

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

Can you use lodash ? 你可以用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] }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM