I have this list of maps.
[ {title: \'Avengers\', release_date: \'10/01/2019\'}, {title: \'Creed\', release_date: \'10/01/2019\'} {title: \'Juman
This is a method naively implemented (in case you don't want to use the groupBy function from the collections package):
List>>> MapByKey(String keyName, String newKeyName, String keyForNewName, List> input) { Map>>> returnValue = Map>>>(); for (var currMap in input) { if (currMap.containsKey(keyName)) { var currKeyValue = currMap[keyName]; var currKeyValueForNewName = currMap[keyForNewName]; if (!returnValue.containsKey(currKeyValue)){ returnValue[currKeyValue] = {currKeyValue : List>()}; } returnValue[currKeyValue][currKeyValue].add({newKeyName : currKeyValueForNewName}); } } return returnValue.values.toList(); } void main() { var test = [ {"title": 'Avengers', "release_date": '10/01/2019'}, {"title": 'Creed', "release_date": '10/01/2019'}, {"title": 'Jumanji', "release_date": '30/10/2019'}, ]; var testMapped = MapByKey("release_date", "name", "title", test); print("$testMapped"); }
The output is:
[ { 10/01/2019: [ {name: Avengers }, {name: Creed } ] }, { 30/10/2019: [ {name: Jumanji } ] } ]