Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 根据日期对事件进行排序的最佳方式是什么_Javascript_Functional Programming_Reactjs - Fatal编程技术网

Javascript 根据日期对事件进行排序的最佳方式是什么

Javascript 根据日期对事件进行排序的最佳方式是什么,javascript,functional-programming,reactjs,Javascript,Functional Programming,Reactjs,我有一个包含数百个事件的数组,其中每个事件都有日期条目(在date()中。getTime格式为DB),我有10天的时间显示在简单的表格中。对于每天行,我需要显示该特定日期的事件数。最好的方法是什么 好的,这里有一个更新: 我使用以下结构创建了Firebase db: { events: { event1: { date: 144335265211, title: "sometext", text: "longer text" },

我有一个包含数百个
事件的数组,其中每个事件都有日期条目(在
date()中。getTime
格式为DB),我有10天的时间显示在简单的表格中。对于每天行,我需要显示该特定日期的事件数。最好的方法是什么

好的,这里有一个更新:

我使用以下结构创建了Firebase db:

{
  events: {
    event1: {
      date: 144335265211,
      title: "sometext",
      text: "longer text"
      },
    event2: {
      date: 1444482619766,
      title: "sometext",
      text: "longer text"
      }
    }
 }
我把它拉到本地Redux商店,所以我有一个具有相同结构的JS数组

通过这种方式,我为特定日期创建了表格:

for (let dc = 0; dc < 10; dc++) {
     const date = new Date();
     date.setDate(date.getDate() + dc);
     const m = date.getMonth();
     const d = date.getDay();
     const y = date.getUTCFullYear();
      rows.push(
        <td>"On the " + m + "/" + d + "/" + y + " is SOMENUMBER events"</td>
      );
   return rows;
    }
for(设dc=0;dc<10;dc++){
const date=新日期();
date.setDate(date.getDate()+dc);
const m=date.getMonth();
const d=date.getDay();
const y=date.getUTCFullYear();
推(
“在“+m+”/“+d+”/“+y+”上有一些事件”
);
返回行;
}

非常感谢

首先需要将其转换为数组:

var events = Object.keys(obj).map((key) => {
  return Object.assign({}, obj[key], {eventName: key});
});
然后你需要按日期对它们进行分组。我们可以用lodash来做

var groupBy = require('lodash/collection/groupBy');

var eventsWithDay = events.map((event) => {
  return Object.assign({}, event, {day: new Date(event.date).setHours(0, 0, 0, 0))
});

var byDay = groupBy(eventsWithDay, 'day');

byDay将是一个对象,每个日期都有一个键,值为当天的事件数组。

您的解释不太清楚。你能不能包括一些代码,比如a?元素是从数据库中提取出来的?您正在使用哪个数据库?请解释一下你想要什么,这样我们可以帮你。现在的问题是无法回答的!显示的数据不是数组,而是对象。将需要另一个对象,该对象使用日期作为键,并以数组作为值将事件放入作为起点,然后可能将其转换为数组或任何您需要的对象,以beThanks@charlietfl!你不介意给我举个简单的例子吗?谢谢,这很有帮助!我尝试使用countBy而不是groupBy来直接输出每天的事件计数。伟大的