首页 > 解决方案 > 如何在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'
          }]

标签: javascripttypescript

解决方案


我将以这种方式提出解决方案-

  • 在合并数组之前,如果它们没有排序(降序),则对它们进行排序。array.sort()为之使用。
  • 对于合并,将第一个数组data1放入一个新数组中,并将该数组的最后一条记录保存在 temp 变量中。let temp = data1[data1.length -1].dateStart. 因为您不需要早于该日期的其他数组中的数据。
  • 如果不早于,则遍历剩余数组data2, data3, ...并将数据推送到新数组中。dateStarttemp

推荐阅读