flutter - 如何在 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;
}
解决方案
推荐阅读
- c++builder - 如何在 VCL 中清除位图
- android - ListView 中的 onViewDetachedFromWindow 或 onDetachedFromRecyclerView 等效项
- mysql - SQL - 考虑键入的多行总和
- python-2.7 - 需要使用 BeautifulSoup 抓取数据
- printing - 防止一个 zpl 文件被打印两次
- qt - QT String to char * 添加额外字符
- database - 如何以 xamarin 表单将注册数据(用户名和密码)连接并保存到 azure 数据库
- apache - 启动 Flume 的 Solace 源时用户名密码不正确
- angular6 - 获取 Angular 多应用程序名称
- c# - IdentityUser 的实体框架核心外键问题