Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/397.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_Ecmascript 6_Functional Programming - Fatal编程技术网

Javascript 如何按日期范围筛选日期数组?

Javascript 如何按日期范围筛选日期数组?,javascript,ecmascript-6,functional-programming,Javascript,Ecmascript 6,Functional Programming,我有一个对象数组。每个对象都包含一个日期属性 我需要返回一个带有日期属性的对象数组。但是,具有连续天数(间隔1天)的日期属性的对象需要位于其自己的数组中 输入示例: const inputArray = [ObjectwDate, ObjectwDate, ObjectwDate, ObjectwDate, ObjectwDate, ObjectwDate, ObjectwDate, ObjectwDate]; 预期产出示例: // example output const finalArra

我有一个对象数组。每个对象都包含一个日期属性

我需要返回一个带有日期属性的对象数组。但是,具有连续天数(间隔1天)的日期属性的对象需要位于其自己的数组中

输入示例:

const inputArray = [ObjectwDate, ObjectwDate, ObjectwDate, ObjectwDate, ObjectwDate, ObjectwDate, ObjectwDate, ObjectwDate];
预期产出示例:

// example output
const finalArray = [ObjectwDate, ObjectwDate, [ObjectwDate, ObjectwDate, ObjectwDate], ObjectwDate, [ObjectwDate, ObjectwDate]];
我真的不知道如何在所有情况下都能让它发挥作用。到目前为止,我有一些类似于以下内容:

 const rangeArray = [];
 const finalArray = [];

// sort input array for oldest date 
const format = inputArray.sort((a, b) => (
   new Date(a.date) - new Date(b.date)
));

format.sort((aDate, bDate) => {
  if (differenceInDays(bDate.date, aDate.date) === 1) {
     rangeArray.push(aDate, bDate);
  }

  finalArray .push(bDate);
});                
我觉得这似乎不是解决我问题的最有效方法。我想知道是否有更好的方法在数组中循环,并将所有具有连续日期的对象放在它们自己的数组中

任何帮助都将不胜感激

编辑: 我使用date fns计算天数差异:


安装阵列后,它应该从那里一直向前。迭代并将连续项推送到数组中。当遇到非连续阵列时,将当前阵列推入一个阵列,然后从一个新阵列开始。如果要推送的数组的长度为1,则只需将该项推送到内部即可。稍后将提供示例代码

更新: 沿着这些线,但仍然必须为最后一个值做一些事情,因为没有i+1。下面的代码不起作用:D
函数组连续日期(arrayOfDates)
{
设outerArray=[];
让innerArray=[];
for(设i=1;i1)
{
开关(innerArray.length)
{
案例0:
打破
案例1:
outerArray.push(innerray[0]);
违约:
外部数组推送(内部数组);
}
innerArray=[currentDate];
继续;
}
innerArray.push(当前日期);
}
函数随机日期(开始、结束){
返回新日期(start.getTime()+Math.random()*(end.getTime()-start.getTime());
}
让日期=[];
for(设i=0;i<20;i++)
{
日期推送(随机日期(新日期(2018年1月5日),新日期());
}
日期=日期.排序((a,b)=>a-b);
函数GetDateDifference(date1、date2)
{
var timeDiff=Math.abs(date2.getTime()-date1.getTime());
var diffDays=数学单元(timeDiff/(1000*3600*24));
返程天数;
}
函数日期(arr)
{

如果(arr.length)那里的
格式是什么?@CertainPerformance抱歉,我已经在这里修复了我的代码。