gpt4 book ai didi

dart - 如何对从Dart/flutter中的List.generate方法获得的列表进行排序?

转载 作者:行者123 更新时间:2023-12-03 04:48:21 25 4
gpt4 key购买 nike

我是 Dart 新手。有一个使用List.generate方法生成的列表,该列表返回字典。现在,我想按'day'键值将列表排序为,如“Sun,Mon,....,Sat”,如以下代码所示。

final filteredTransactions = List.generate(7, (index) {
final weekDay = DateTime.now().subtract(Duration(days: index));
var totalSum = 0.0;
for (var i = 0; i < recentTransactions.length; i++) {
if (recentTransactions[i].date.day == weekDay.day &&
recentTransactions[i].date.month == weekDay.month &&
recentTransactions[i].date.year == weekDay.year) {
totalSum += recentTransactions[i].amount;
}
}
return {'day': DateFormat.E().format(weekDay), 'amount': totalSum};
})

最近交易是一个包含对象日期和金额数据的列表。如何按“天”对filteredTransactions进行排序?谢谢。

最佳答案

更新了我的示例,使其更接近您自己的代码。我也没有注意到day是一个String而不是DateTime,因此排序需要进行不同的处理。

我认为最简单的排序方法是定义一个Map,它定义您希望周日期如何排序,因为我们不能只按字母顺序进行此操作。

import 'package:intl/intl.dart';

void main() {
final filteredTransactions = List.generate(7, (index) {
final weekDay = DateTime.now().subtract(Duration(days: index));
var totalSum = 0.0;

return {'day': DateFormat.E().format(weekDay), 'amount': totalSum};
});

const sortOrder = {
'Sun': 0,
'Mon': 1,
'Tue': 2,
'Wed': 3,
'Thu': 4,
'Fri': 5,
'Sat': 6
};

filteredTransactions.sort((m1, m2) => sortOrder[(m1['day'] as String)]
.compareTo(sortOrder[m2['day'] as String]));

filteredTransactions.forEach(print);
// {day: Sun, amount: 0.0}
// {day: Mon, amount: 0.0}
// {day: Tue, amount: 0.0}
// {day: Wed, amount: 0.0}
// {day: Thu, amount: 0.0}
// {day: Fri, amount: 0.0}
// {day: Sat, amount: 0.0}
}

关于dart - 如何对从Dart/flutter中的List.generate方法获得的列表进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61853426/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com