arrays - 如何在 Dart 中对这个数组/映射进行排序?
问题描述
如何从 Dart 中的“数据”中对该地图/数组进行排序?
var training = [
{"data" : "15/10/2019" , "pic" : "assets/images/foto3.jpg"},
{"data" : "10/10/2019" , "pic" : "assets/images/foto5.jpg"},
{"data" : "15/10/2019" , "pic" : "assets/images/foto4.jpg"},
{"data" : "30/10/2019" , "pic" : "assets/images/bocateam.jpg"},
{"data" : "17/10/2019" , "pic" : "assets/images/foto2.jpg"},
];
解决方案
我不确定您要对什么进行排序,但我猜它是“数据”值中的日期。请看一下这个实现,如果有什么你不明白的,请告诉我:
void main() {
final training = [
{"data": "15/10/2019", "pic": "assets/images/foto3.jpg"},
{"data": "10/10/2019", "pic": "assets/images/foto5.jpg"},
{"data": "15/10/2019", "pic": "assets/images/foto4.jpg"},
{"data": "30/10/2019", "pic": "assets/images/bocateam.jpg"},
{"data": "17/10/2019", "pic": "assets/images/foto2.jpg"},
];
training.sort((map1, map2) {
final date1 = parseDate(map1['data']);
final date2 = parseDate(map2['data']);
return date1.compareTo(date2);
});
training.forEach(print);
// {data: 10/10/2019, pic: assets/images/foto5.jpg}
// {data: 15/10/2019, pic: assets/images/foto3.jpg}
// {data: 15/10/2019, pic: assets/images/foto4.jpg}
// {data: 17/10/2019, pic: assets/images/foto2.jpg}
// {data: 30/10/2019, pic: assets/images/bocateam.jpg}
}
// Format: 15/10/2019
DateTime parseDate(String date) {
final parts = date.split('/');
return DateTime(
int.parse(parts[2]), int.parse(parts[1]), int.parse(parts[0]));
}
如果首先将每个日期转换为DateTime
对象,则实现可能会更有效,因此我们在排序时不需要多次转换每个对象。但如果列表很短,这不是一个大问题。
推荐阅读
- java - 如何在控制台中打印通用树?
- php - Wordpress + Divi:自定义部分切换
- mysql - 使用 AWS Database MIgration 服务将数据迁移到 Sql 服务器时,在日光转换期间将时间戳缩短一小时
- reactjs - 在 iOS 中进行构建时 React Native 显示错误 - 构建失败以下构建命令失败:CompileC
- ios - 正则表达式匹配字符串中的#hashtag 字符
- php - 仅显示登录作者的帖子时,如何获取 a 标签来包装 the_title?
- javascript - 使用 Django 时,有没有办法在 js 或 html 中设置上下文变量的值?
- java - 如何使用 sh jython.sh -i furElise.py 使用 Java 创建我的堆(基于 Shell 的 Java 问题)?
- c - 在 pari-gp 中创建初始化文件
- javascript - 在 JavaScript 中无需硬编码即可找到数组的平均值