代码如下:
list.component.ts
const data1 = [
{
dateStart: "2020-02-14 00:00:01",
name: 'Server1'
},
{
dateStart: "2020-02-13 14:00:01",
name: 'Server1'
},
{
dateStart: "2020-02-13 13:00:01",
name: 'Server1'
},
{
dateStart: "2020-02-13 12:00:01",
name: 'Server1'
},
{
dateStart: "2020-02-13 11:00:01",
name: 'Server1'
}
];
const data2 = [
{
dateStart: "2020-02-13 14:00:01",
name: 'Server2'
},
{
dateStart: "2020-02-13 13:00:01",
name: 'Server2'
},
{
dateStart: "2020-02-13 12:00:01",
name: 'Server2'
},
{
dateStart: "2020-02-13 11:00:01",
name: 'Server2'
},
{
dateStart: "2020-02-12 11:00:01",
name: 'Server2'
},
{
dateStart: "2020-02-11 11:00:01",
name: 'Server2'
},
]
const arr = new Array();
arr.push(data1, data2);
arr.forEach(server => {
const rec = orderBy(server, ['dateStart'], ['desc']);
console.log(rec);
});
}
我想要的是,如果 data1 有一个数组(16),那么 data2 有一个数组(20),并且它们都具有相同的日期,但 data2 具有不应显示的最旧数据。
输出应该是这样的:
[
{
dateStart: "2020-02-14 00:00:01",
name: "Server1"
},
{
dateStart: "2020-02-13 14:00:01",
name: "Server1"
},
{
dateStart: "2020-02-13 13:00:01",
name: "Server1"
},
{
dateStart: "2020-02-13 12:00:01",
name: "Server1"
},
{
dateStart: "2020-02-13 11:00:01",
name: "Server1"
}
],
[
{
dateStart: "2020-02-13 14:00:01",
name: 'Server2'
},
{
dateStart: "2020-02-13 13:00:01",
name: 'Server2'
},
{
dateStart: "2020-02-13 12:00:01",
name: 'Server2'
},
{
dateStart: "2020-02-13 11:00:01",
name: 'Server2'
}
]
代码如下:https://stackblitz.com/edit/angular-akhhbp
如果有新数组。这是 data3,它有一个数组(25),然后它将相互比较。如 data1、data2 和 data3,如果日期不匹配,则不会显示。
示例:
data1 = [{
dateStart: "2020-02-13 14:00:01",
name: 'Server1'
},
{
dateStart: "2020-02-13 13:00:01",
name: 'Server1'
},
{
dateStart: "2020-02-13 12:00:01",
name: 'Server1'
}]
data2 = [ {
dateStart: "2020-02-13 14:00:01",
name: 'Server2'
},
{
dateStart: "2020-02-13 13:00:01",
name: 'Server2'
},
{
dateStart: "2020-02-13 12:00:01",
name: 'Server2'
},
{
dateStart: "2020-02-13 11:00:01",
name: 'Server2'
},
{
dateStart: "2020-02-12 11:00:01",
name: 'Server2'
}],
data3 = [ {
dateStart: "2020-02-13 14:00:01",
name: 'Server3'
},
{
dateStart: "2020-02-13 13:12:01",
name: 'Server3'
},
{
dateStart: "2020-02-13 12:00:01",
name: 'Server3'
},
{
dateStart: "2020-02-13 11:00:01",
name: 'Server3'
},
{
dateStart: "2020-02-12 10:00:01",
name: 'Server3'
}]
输出应该是。
[{
dateStart: "2020-02-13 14:00:01",
name: 'Server1'
},
{
dateStart: "2020-02-13 13:00:01",
name: 'Server1'
},
{
dateStart: "2020-02-13 12:00:01",
name: 'Server1'
}],
[ {
dateStart: "2020-02-13 14:00:01",
name: 'Server2'
},
{
dateStart: "2020-02-13 13:00:01",
name: 'Server2'
},
{
dateStart: "2020-02-13 12:00:01",
name: 'Server2'
}],
[ {
dateStart: "2020-02-13 14:00:01",
name: 'Server3'
},
{
dateStart: "2020-02-13 13:12:01",
name: 'Server3'
},
{
dateStart: "2020-02-13 12:00:01",
name: 'Server3'
},
{
dateStart: "2020-02-13 11:00:01",
name: 'Server3'
},
{
dateStart: "2020-02-12 10:00:01",
name: 'Server3'
}]
最佳答案
我会这样提出解决方案 -
- 在合并数组之前,如果未排序,请对其进行排序(降序)。使用
array.sort()
来实现它。 - 要进行合并,请将第一个数组
data1
放入新数组中,并将该数组的最后一条记录保存在临时变量中。让 temp = data1[data1.length -1].dateStart
。因为您不需要早于该日期的其他数组中的数据。 - 迭代剩余数组
data2、data3、...
,如果dateStart
不早于temp
,则将数据推送到新数组中>。
关于javascript - 如何在javascript中根据日期显示数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60201796/