首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在dart中按多个值对列表进行分组

在Dart中,可以使用groupBy函数来按多个值对列表进行分组。

groupBy函数是一个自定义的扩展方法,可以将列表中的元素按照指定的多个属性值进行分组。以下是一个示例代码:

代码语言:txt
复制
extension GroupByExtension<T> on Iterable<T> {
  Map<String, List<T>> groupBy(List<String> properties) {
    Map<String, List<T>> result = {};

    for (var element in this) {
      String key = '';
      for (var property in properties) {
        key += element[property].toString();
      }

      if (!result.containsKey(key)) {
        result[key] = [];
      }
      result[key]!.add(element);
    }

    return result;
  }
}

void main() {
  List<Map<String, dynamic>> data = [
    {'name': 'Alice', 'age': 25, 'city': 'New York'},
    {'name': 'Bob', 'age': 30, 'city': 'London'},
    {'name': 'Charlie', 'age': 25, 'city': 'New York'},
    {'name': 'Dave', 'age': 30, 'city': 'London'},
  ];

  List<String> properties = ['age', 'city'];
  Map<String, List<Map<String, dynamic>>> groupedData = data.groupBy(properties);

  for (var entry in groupedData.entries) {
    print('Group ${entry.key}:');
    for (var element in entry.value) {
      print(element);
    }
    print('');
  }
}

在上述代码中,我们定义了一个groupBy扩展方法,它接受一个包含属性名的列表作为参数。然后,我们遍历列表中的每个元素,根据指定的属性值生成一个唯一的键。如果该键在结果字典中不存在,则创建一个空列表作为值。然后,将当前元素添加到对应的列表中。最后,返回分组结果字典。

main函数中,我们创建了一个包含姓名、年龄和城市的数据列表。然后,我们指定按照年龄和城市进行分组,并将结果存储在groupedData变量中。最后,我们遍历分组结果,并打印每个分组的内容。

这是一个简单的示例,你可以根据实际需求进行修改和扩展。如果你想了解更多关于Dart的相关知识,可以参考腾讯云的Dart开发者指南

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

领券