Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在javascript中合并具有相同索引的json列表_Javascript_Json - Fatal编程技术网

在javascript中合并具有相同索引的json列表

在javascript中合并具有相同索引的json列表,javascript,json,Javascript,Json,我有以下json数据: { "leadId": 0, "nationalAvg": { "2007": 822.0, "2008": 830.0, "2009": 880.0, "2010": 909.0, "2011": 979.0, }, "stateAvg": { "2007": 1023.0, "2008": 1026.

我有以下json数据:

{
    "leadId": 0,

    "nationalAvg": {
        "2007": 822.0,
        "2008": 830.0,
        "2009": 880.0,
        "2010": 909.0,
        "2011": 979.0,            
    },
    "stateAvg": {
        "2007": 1023.0,
        "2008": 1026.0,
        "2009": 1035.0,
        "2010": 1050.0,
        "2011": 1072.0,
        "2012": 1150.0,
    },
    "zipCodeAvg": {
        "2007": 1050.98,
        "2008": 1054.06,
        "2009": 1063.29,
        "2010": 1078.69,
        "2011": 1101.27,
        "2012": 1181.49,
        "2013": 1297.64,
        "2014": 1349.99,
    }
}
我想将nationalAvg、stateAvg、zipCodeAvg合并在一起,得到如下结果:

["2007":  822.0,      1023.0,   1050.98]
["2008":  830.0,      1026.0,   1054.06]
["2009":  880.0,      1035.0,   1063.29]
["2010":  909.0,      1050.0,   1078.69]
["2011":  null,       1072.0,   1101.27]
["2012":  null,      1150.0,    1181.49]
["2013":  null,      null,      1297.64]
["2014":  null,      null,      1349.99]

我想在谷歌折线图上显示这些数据

您可以这样做:

const数据={
“leadId”:0,
“国民平均收入”:{
"2007": 822.0,
"2008": 830.0,
"2009": 880.0,
"2010": 909.0,
"2011": 979.0,            
},
“stateAvg”:{
"2007": 1023.0,
"2008": 1026.0,
"2009": 1035.0,
"2010": 1050.0,
"2011": 1072.0,
"2012": 1150.0,
},
“zipCodeAvg”:{
"2007": 1050.98,
"2008": 1054.06,
"2009": 1063.29,
"2010": 1078.69,
"2011": 1101.27,
"2012": 1181.49,
"2013": 1297.64,
"2014": 1349.99,
}
}
const key=['nationalAvg'、'stateAvg'、'zipCodeAvg'];
常数年=键
.reduce((a,k)=>[…a,…Object.keys(数据[k]),[]))
.filter((v,i,arr)=>arr.indexOf(v)==i)
.sort();
const result=years.map((year)=>
[year,…keys.reduce((a,k)=>[…a,data[k][year]],[])]
);
控制台日志(结果)
const list={
“leadId”:0,
“国民平均收入”:{
"2007": 822.0,
"2008": 830.0,
"2009": 880.0,
"2010": 909.0,
"2011": 979.0,            
},
“stateAvg”:{
"2007": 1023.0,
"2008": 1026.0,
"2009": 1035.0,
"2010": 1050.0,
"2011": 1072.0,
"2012": 1150.0,
},
“zipCodeAvg”:{
"2007": 1050.98,
"2008": 1054.06,
"2009": 1063.29,
"2010": 1078.69,
"2011": 1101.27,
"2012": 1181.49,
"2013": 1297.64,
"2014": 1349.99,
}
}
let keys=['nationalAvg'、'stateAvg'、'zipCodeAvg'];
让obj=键。减少((acc,c,i)=>{
Object.entries(list[c]).map((o)=>{
acc[o[0]=(acc[o[0]| | Array.from({length:keys.length}).fill(null));
acc[o[0]][i]=(o[1]);
});
返回acc;
}, {});
//格式1
控制台日志(obj);
const result=Object.entries(obj.map)(o=>[o[0],…o[1]]);
//格式2

console.log(result)
那么您尝试了什么?输出是否正确?该输出不是有效的JavaScript。。。与
a.concat(Object.keys(data[k])相比,您需要像
{“2007:[822.01023.01050.98],“2008:[830.01026.01054.06],…}
[…a,…Object.keys(data[k])]这样的东西。
速度更慢,可读性更低,字符更多,更容易在大数据上发生堆栈溢出。
,与
[…a,data[k]类似[年份]]
这是一个完美的解决方案