javascript - 如何在javascript中根据日期显示数组
问题描述
这是代码:
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 变量中。let temp = data1[data1.length -1].dateStart
. 因为您不需要早于该日期的其他数组中的数据。 - 如果不早于,则遍历剩余数组
data2, data3, ...
并将数据推送到新数组中。dateStart
temp
推荐阅读
- html - div内的Html Css跨度不显示文本
- python - 错误:无法为使用 PEP 517 且无法直接安装的 PyNaCl、multidict、yarl 构建轮子
- python - 跟踪图形着色的约束?
- python - shutil.copy2 无法使用 Python 在磁盘驱动器之间复制文件
- javascript - 使用 Javascript/jQuery 通知用户他们的约会即将开始?
- c++ - c++中的继承:析构函数
- c# - 更改后如何打印变量的新值
- r - 在 R 中使用 ggplot 在日期线上绘制点
- ffmpeg - 通过虚拟网络摄像头 (linux) 流式传输 gif ffmpeg gif v4l2
- javascript - 如何在javascript中将两个数组转换为地图