合并多个json对象

时间:2018-01-23 12:32:42

标签: javascript json

我目前正在使用javascript项目。在我的项目中,我有两个json数组,如:

var one = [{
"dps": {
        "1516624200": 0.03333333333333333,
        "1516624800": 0.88,
        "1516625400": 0.0,
        "1516626000": 0.0,
        "1516626600": 0.0,
        "1516627200": -0.012962962962963048,
        "1516627800": -0.022390572390572364,
        "1516628400": 20.37605723905724,
        "1516629000": 80.06746296296296,
        "1516629600": 94.12977777777778,
        "1516630200": 94.11733333333332,
        "1516630800": 94.1302777777778,
        "1516631400": 94.19999999999995
        }
}]  

var two = [{
"dps": {
        "1516624200": 0.2,
        "1516624800": 0.95,
        "1516625400": 0.0,
        "1516626000": 0.0,
        "1516626600": 0.0,
        "1516627200": -0.55,
        "1516627800": -0.6,
        "1516628400": 20.77,
        "1516629000": 8296296296,
        "1516629600": 99,
        "1516630200": 99,
        "1516630800": 55,
        "1516631400": 94.19999999999995
        }
}]

我想合并这两个数组,最终输出应该像这些类型的数组

[1516624200,0.03333333333333333,0.2],[1516624800,0.88,0.0]  

我正在使用:

 var graphData = [];
    var getValue = data[0].dps;
    var getVal = data[1].dps;
    for(var i in getVal){
        for(j in getVal){
            graphData.push([new Date(i*1000),getVal[i],getVal[i]])
        }
    }

这给了我错误的价值观。请帮忙。

4 个答案:

答案 0 :(得分:3)

使用map

var output = Object.keys(one[0].dps).map( s => [ s, one[0].dps[s], two[0].dps[s] ] )

答案 1 :(得分:0)

try this

var graphData = [];
for (let obj of one[0].dps) {
graphData.push(obj);
}
for (let obj of two[0].dps){
graphData.push(obj);
}

答案 2 :(得分:0)

这应该这样做:

var graphData = [];
var newGraphDataValue = [];
var oneDps = one[0].dps;
var twoDps = two[0].dps;

Object.keys(oneDps).forEach(function(oneDpsKey){
    newGraphDataValue = [oneDpsKey, oneDps[oneDpsKey]];
    Object.keys(twoDps).forEach(function(twoDpsKey){
    if (twoDpsKey === oneDpsKey) {
        newGraphDataValue.push(twoDps[twoDpsKey]);
    }
  });
  graphData.push(newGraphDataValue);
});

console.log('Result: ', graphData);

答案 3 :(得分:0)

对您的代码进行少量修改:

  var graphData = [], i, j, d;

  var getValue = one[0].dps;
  var getVal = two[0].dps;
  for(i in getValue){
    for(j in getVal){
      d = new Date(i*1000);
      graphData.push([d.getTime(),getValue[i], getVal[j]]);
    }
  }
  console.log(graphData);

得到如下结果:

(3) [1516624200000, 0.03333333333333333, 0.2]
(3) [1516624200000, 0.03333333333333333, 0.95]
(3) [1516624200000, 0.03333333333333333, 0]
(3) [1516624200000, 0.03333333333333333, 0]
(3) [1516624200000, 0.03333333333333333, 0]
(3) [1516624200000, 0.03333333333333333, -0.55]
(3) [1516624200000, 0.03333333333333333, -0.6]
(3) [1516624200000, 0.03333333333333333, 20.77]
(3) [1516624200000, 0.03333333333333333, 8296296296]
(3) [1516624200000, 0.03333333333333333, 99]
(3) [1516624200000, 0.03333333333333333, 99]
(3) [1516624200000, 0.03333333333333333, 55]
(3) [1516624200000, 0.03333333333333333, 94.19999999999995]
(3) [1516624800000, 0.88, 0.2]
...