如何在特定日期过滤数据

时间:2020-02-10 13:25:07

标签: javascript filter

我有一些类似的数据:

[
  {
    startTime: '2020-01-28T11:00:00',
    name: 'John',
  },
  {
    startTime: '2020-01-28T12:00:00',
    name: 'Doe'
  },
  {
    startTime: '2020-01-29T10:00:00',
    name: 'javascript',
  }
]

如您所见,某些对象有相同的日子,现在我想按天过滤它们!整天都是数组。

像这样:

[
  {
    startTime: '2020-01-28T11:00:00',
    name: 'John'
  },
  {
    startTime: '2020-01-28T12:00:00',
    name: 'Doe'
  },
],
[
  {
    startTime: '2020-01-29T10:00:00',
    name: 'javascript'
  },
]

您有什么建议或建议吗?

1 个答案:

答案 0 :(得分:2)

您可以像这样创建groupBy函数

我们通过players中前10个字符的子字符串将startTime分组,这将是相同的数据

var players = [
    {
      startTime: '2020-01-28T11:00:00',
      name: 'John',
    },
    {
      startTime: '2020-01-28T12:00:00',
      name: 'Doe'
    },
    {
      startTime: '2020-01-29T10:00:00',
      name: 'javascript',
    }
  ]
  
  var groupBy = function(xs, key) {
    return xs.reduce(function(rv, x) {
      (rv[x[key].substr(0,10)] = rv[x[key].substr(0,10)] || []).push(x);
      return rv;
    }, {});
  };
  
  console.log(Object.values(groupBy(players, 'startTime')));