Javascript 基于日期合并/组合阵列数据,而不在角度上重复
如何基于日期合并阵列数据而不重复 代码如下:Javascript 基于日期合并/组合阵列数据,而不在角度上重复,javascript,typescript,Javascript,Typescript,如何基于日期合并阵列数据而不重复 代码如下: [ { date: [ '2019-12-02 08:00:00', '2019-12-03 08:00:00' ], upload:["47.93", "47.46", "47.40", "47.29" ], download: ["43.90", "41.12", "46.80", "47.86", "47.69", "47.74" ], ping: ["3.607", "4.209", "4.052", "3.559", "3
[
{
date: [ '2019-12-02 08:00:00', '2019-12-03 08:00:00' ],
upload:["47.93", "47.46", "47.40", "47.29" ],
download: ["43.90", "41.12", "46.80", "47.86", "47.69", "47.74" ],
ping: ["3.607", "4.209", "4.052", "3.559", "3.8"]
}
],[
{
date: [ '2019-12-02 08:00:00', '2019-12-04 08:00:00' ],
upload: [ "47.93", "47.46", "41.40", "52.30" ],
download: [ "47.90", "47.12", "46.80", "47.86", "47.69", "47.74" ],
ping: ["3.607", "4.209", "4.052", "1.559", "3.2" ]
}
]
以下是预期输出:
[
{
date : [ '2019-12-04 08:00:00', '2019-12-02 08:00:00', '2019-12-03 08:00:00']
data: [
0: {
upload:["47.93", "47.46", "47.40", "47.29" ],
download: ["43.90", "41.12", "46.80", "47.86", "47.69", "47.74" ],
ping: ["3.607", "4.209", "4.052", "3.559", "3.8"]
},
1: {
upload: [ "47.93", "47.46", "41.40", "52.30" ],
download: [ "47.90", "47.12", "46.80", "47.86", "47.69", "47.74" ],
ping: ["3.607", "4.209", "4.052", "1.559", "3.2" ]
}
]
然后,当它合并数据时,它将基于日期,并且在合并时不应重复日期。我能想到的是,您可以迭代所有数据,然后执行一个内部循环,以检查数据的结果日期。日期并检查它是否存在,否则继续检查。在内部循环结束时,检查是否存在以更新现有数据,否则追加新数据
//初始数据数组
常数a=[{
日期:['2019-12-02 08:00:00','2019-12-03 08:00:00'],
上传:[“47.93”、“47.46”、“47.40”、“47.29”],
下载:[“43.90”、“41.12”、“46.80”、“47.86”、“47.69”、“47.74”],
平:[“3.607”、“4.209”、“4.052”、“3.559”、“3.8”]
}, {
日期:['2019-12-02 08:00:00','2019-12-04 08:00:00'],
上传:[“47.93”、“47.46”、“41.40”、“52.30”],
下载:[“47.90”、“47.12”、“46.80”、“47.86”、“47.69”、“47.74”],
平:[“3.607”、“4.209”、“4.052”、“1.559”、“3.2”]
}];
//迭代初始数据
const result=a.reduce((附件,项目)=>{
让存在=虚假;
设curr_idx=null;
//重复日期
用于(项目的施工日期。日期){
//检查当前结果日期是否包含当前日期数据
对于(acc.entries()的常量[idx,obj]){
exists=obj.date.indexOf(日期)>=0;
如果(存在){
电流idx=idx;
打破
}
}
如果(存在){
打破
}
}
如果(存在){
acc[curr\u idx].date=Array.from(新集合(acc[curr\u idx].date.concat(item.date)))
acc[curr_idx].data.push({
上传:item.upload,
下载:item.download,
ping:item.ping
})
}否则{
加速推({
日期:item.date,
数据:[{
上传:item.upload,
下载:item.download,
ping:item.ping
}]
})
}
返回acc;
}, []);