如何使用javascript合并对象 [英] How to merge objects using javascript

查看:128
本文介绍了如何使用javascript合并对象的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图创建一个类似于下面的json对象:

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]]
}]

我使用d3写了脚本,如何合并对象数组以获取json?

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?

以下是代码:

 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));

 });

以下是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


推荐答案

href =http://lodash.com/docs#merge =nofollow> lodash ?

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] }

这篇关于如何使用javascript合并对象的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆