Flutter/Dart how to groupBy list of maps

后端 未结 5 1699
后悔当初
后悔当初 2020-12-01 23:26

I have this list of maps.

[
    {title: \'Avengers\', release_date: \'10/01/2019\'},
    {title: \'Creed\', release_date: \'10/01/2019\'}
    {title: \'Juman         


        
5条回答
  •  臣服心动
    2020-12-02 00:07

    The package collection implements the groupBy function.

    For grouping by date:

    import "package:collection/collection.dart";
    
    main(List args) {
      var data = [
        {"title": 'Avengers', "release_date": '10/01/2019'},
        {"title": 'Creed', "release_date": '10/01/2019'},
        {"title": 'Jumanji', "release_date": '30/10/2019'},
      ];
    
    
      var newMap = groupBy(data, (obj) => obj['release_date']);
    
      print(newMap);
    }
    

    For removing the release_date key from each map entry:

    var newMap = groupBy(data, (obj) => obj['release_date']).map(
        (k, v) => MapEntry(k, v.map((item) { item.remove('release_date'); return item;}).toList()));
    

    For changing a key:

    var newMap = groupBy(data, (obj) => obj['release_date']).map(
        (k, v) => MapEntry(k, v.map((item) => {'name': item['title']}).toList()));
    

提交回复
热议问题