Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/419.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/11.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_Algorithm - Fatal编程技术网

结构化的待办事项列表,带有“等”小标题;今天",&引用;星期五&引用;“下周”&引用;三月“;在JavaScript中

结构化的待办事项列表,带有“等”小标题;今天",&引用;星期五&引用;“下周”&引用;三月“;在JavaScript中,javascript,algorithm,Javascript,Algorithm,我想用JavaScript制作一个待办事项列表,如下所示: var tasks = [ { due: '2017-05-01-17:00', task: 'Do something', }, { due: '2017-22-01-17:00', task: 'Do something else', } // ... ] 无期限 太棒了 生活 今天 遛狗 买食物 制定 本周 洛勒姆 Ipsum 多洛 下周 多洛 Ipsum

我想用JavaScript制作一个待办事项列表,如下所示:

var tasks =
[
  { 
     due: '2017-05-01-17:00',
     task: 'Do something',
  }, 
  { 
     due: '2017-22-01-17:00',
     task: 'Do something else',
  }

  // ...
]
  • 无期限
  • 太棒了
  • 生活
  • 今天
  • 遛狗
  • 买食物
  • 制定
  • 本周
  • 洛勒姆
  • Ipsum
  • 多洛
  • 下周
  • 多洛
  • Ipsum
基本上,它需要是动态的,所以我不希望副标题一直是相同的

如果明天有超过2个任务到期,我希望有一个标题写着“明天”,如果本周有5个任务到期,我希望标题写着“本周”

如果“下周”没有太多事情要做,但是任务在整个下个月都被分配,我希望它改为“下个月”等等

因此,我将有一个带有任务的JSON对象,如下所示:

var tasks =
[
  { 
     due: '2017-05-01-17:00',
     task: 'Do something',
  }, 
  { 
     due: '2017-22-01-17:00',
     task: 'Do something else',
  }

  // ...
]

我想用某种算法把它排序成一个动态的待办事项列表

问题在于重叠。今天的任务也是“本周”和“本月”的任务,所以如果你做一个简单的计数,你会得到不可预测的结果。也就是说,你今天有5项任务,2天内有1项。“this week”的计数器将返回6,但如果您决定使用“today”标题,则下一标题的实际剩余任务数将为1

若可能,我会尝试将查询更改为DB,以计算数据库中每个任务的标志。所以每个任务都有简单的布尔标记:今天、明天、本周、下周、本月。。。如果在数据库中这样做很复杂,您还可以在JavaScript中将原始数组转换为该数组

然后,从“今天”循环到“下个月”,如:

  • 统计具有“today”标志的任务,如果超过最小值,则在headers集合中输出此标头

  • 计数设置了“本周”标志的任务,但如果“今天”已在集合中,则排除设置了“今天”标志的任务(否则不排除它们)。如果计数高于最小值,请将此标题添加到集合中


  • 。。。重复。

    那么您是如何做到这一点的呢?我想您必须根据自己的喜好自行定义算法。它可以使switch语句更易于查看,并具有显示哪些选项卡的层次结构。我将从将军开始,今天、明天、本周、下个月,并从那里着手改进它。