flutter 数组筛查功能实现
前言
前一段时间,项目需要进行数组筛查工作,需要将一个大数组中的某些相同数据,筛查出来并分组,本篇文章将记录我的数据筛查文档
一、使用 where 筛查数据
List list = [
{
"name": "tiger", "age": 17, "addDate": DateTime.now()},
{
"name": "二妞", "age": 18, "addDate": DateTime.now()},
{
"name": "王麻子", "age": 19, "addDate": DateTime.now()},
{
"name": "老赵", "age": 18, "addDate": DateTime.now()},
{
"name": "阿雅", "age": 18, "addDate": DateTime.now()},
];
使用 where 进行数据筛查实现
int selectAge = 18;
var printList = list.where((element) => element["age"] == selectAge).toList();
print(printList);
筛查结果输出
二、数组分组
上面我们看了数组数据的筛查,当我们工作中,还需要将数据进行分组,并在分组之后进行数据展示,我们该怎么做呢?下面是我个人的一些做法。
- 定义一个数组,保存所有需要展示的标题字段
// 保存提取出来的组头
List ageList = [];
for (var item in list) {
ageList.add(item["age"]);
}
print(ageList);
- 使用toSet() 函数去重标题重复数据,并转换成数组
// 去除组头中的重复数据
ageList = ageList.toSet().toList();
print(ageList);
- 定义一个最终使用的,分组之后用来保存数据的数组,然后遍历标题数组,取得每个标题的字段,使用 where 进行数组数据进行筛查工作,并将筛查之后的数组,add() 到分组数据的数组中
// 循环遍历所有的表头年龄
// 定义一个新的数组,存放分组之后的数据
List groupList = [];
for (var age in ageList) {
// 筛查出每个年龄的数组
var printList = list.where((element) => element["age"] == age).toList();
// 将每组数据,分别放入分组数组中
groupList.add({
"headGroup": age, "list": printList});
}
print(groupList);
最终数据打印结果:
总结
关于数组数据的排序、筛查、分组、等相关的知识点,我使用了两篇简短的文章,为大家呈现出来,并为自己做了一个简单的记录,如果你喜欢的话,点个赞呗