📅  最后修改于: 2023-12-03 15:14:36.690000             🧑  作者: Mango
在Dart中,我们可以使用键值对(Map)来表示键和值之间的关系。但是,有时我们需要按键分组数组,这种情况下就可以使用Dart内置的groupby()函数。
groupby()函数可以将列表按照指定的键进行分组,并将分组后的结果放入一个Map中。以下是groupby()函数的基本用法:
List list = [...];
Map group = groupBy(list, (obj) => obj.key);
其中,list是要分组的列表,而key是用来分组的关键字。
假设我们有一个用户列表,每个用户都有一个国家和姓名,我们想要按国家分组并输出每个国家的用户。下面是一个完整的示例代码:
import 'package:collection/collection.dart';
void main() {
List users = [
{'name': 'John', 'country': 'USA'},
{'name': 'Sarah', 'country': 'UK'},
{'name': 'Peter', 'country': 'USA'},
{'name': 'George', 'country': 'UK'},
{'name': 'Emma', 'country': 'USA'},
{'name': 'David', 'country': 'FR'},
];
Map countryUsers = groupBy(users, (obj) => obj['country']);
countryUsers.forEach((k, v) {
print('$k - ${v.map((obj) => obj['name']).join(', ')}');
});
}
运行结果如下:
USA - John, Peter, Emma
UK - Sarah, George
FR - David
我们可以使用Dart的collection库中的groupby()函数来按键分组数组。需要在文件头部导入collection库。
import 'package:collection/collection.dart';
groupby()函数是Dart中非常有用的功能,可以帮助您轻松按键分组数组,使得您的代码更容易理解和管理。为了更好的理解和掌握该方法,您可以根据自己的需求更改示例代码并尝试自己的代码。