javascript - 如何在javascript中根据日期显示数组

标签 javascript typescript

代码如下:

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/

相关文章:

angular - 在同一台机器上安装 Ionic 2 和 3

javascript - 按顺序执行多个数据库查询( promise )

javascript - 恢复页面刷新时下拉选择的选项?

javascript - 如何在 HTML 文档中的选定位置插入元素?

javascript - 如何在 Chrome 中正确读取和修复 Web 应用程序的内存使用情况

javascript - TypeScript JavaScript 缓存问题

javascript - 使用不同的键创建对象

javascript - 为什么 rollup.js 不在其输出中包含 - 排他性 - 导出的值?

javascript - 如何对多个 DIV 使用 JQuery 切换?

typescript - TypeScript 字符串枚举中的反向映射