首页 > 解决方案 > 如何在 Dart 中将列表缩减为最早/最新的 DateTime 项 - 你知道有趣的代码问题类型

问题描述

我有一个 DateTime 项目列表,我想获取该列表中最早和最新的项目,以便根据 db 中的可用数据使用最小值/最大值初始化日期范围选择器。

我很难跟踪循环和 reduce 运算符中的“幕后”。所以我正在寻找任何帮助来有效地实现这一点,因为我确信我可以通过 10 个循环来低效地实现这一点:P

到目前为止我所尝试的,显然是随机的东西。双循环和使用 reduce 和 .isbefore 或 .isAfter 循环。想不通这个。我下面的代码是一个大杂烩,但它就是我现在所处的位置。我想另一种选择是按日期简单地对列表进行排序,然后取第一个和最后一个,但我想看到最好的解决方案,我认为这是问的正确地方。

就是我要申请的。

List<DateTime> dateList = [
DateTime(2021, 7, 30),
DateTime(2021, 6, 25),
DateTime(2021, 5, 14),
DateTime(2021, 4, 2),
DateTime(2021, 3, 12),
DateTime(2021, 3, 21)
];

List<DateTime> databaseDateRange() {
    var databaseDateRange = <DateTime>[];
    for (var item in dateList) {
      dateList.reduce((value, element) {
        if (value.isAfter(item)) {
        databaseDateRange.add(value.xAxis);
        }
      });
    }
    return databaseDateRange;
  }

标签: flutterdatetimedart

解决方案


推荐阅读