在Dart中对地图列表进行排序 - 在Dart中进行第二级排序

use*_*856 9 sorting dart

我有这样的地图列表:

var associations = [{'name': 'EG', 'description': 'Evil Genius'},
                    {'name': 'NaVi', 'description': 'Natus Vincere'}];

var members = [
{'associationName': 'EG', 'firstName': 'Bob', 'lastName': 'Dylan', 'email': 'bd@gmail.com'},
{'associationName': 'NaVi', 'firstName': 'John', 'lastName': 'Malkovich', 'email': 'jm@gmail.com'},
{'associationName': 'EG', 'firstName': 'Charles', 'lastName': 'Darwin', 'email': 'cd@gmail.com'}
];
Run Code Online (Sandbox Code Playgroud)

我想编写一个代码,按先前的姓氏按字母顺序排序成员列表,然后按名字排序.此外,我希望能够找到姓氏以指定字母开头的成员.例如,有了D,我们就会得到Bob Dylan和Charles Darwin.我能够使用单个地图或单个列表来管理它,但是组合地图列表会使其变得更加困难.

谢谢你的帮助.

Ale*_*uin 17

排序 :

members.sort((m1, m2) {
  var r = m1["lastName"].compareTo(m2["lastName"]);
  if (r != 0) return r;
  return m1["firstName"].compareTo(m2["firstName"]);
});
Run Code Online (Sandbox Code Playgroud)

过滤:

members.where((m) => m['lastName'].startsWith('D'));
Run Code Online (Sandbox Code Playgroud)


小智 10

List<Map> myList = [
  { 'name' : 'ifredom',age:23},
  { 'name' : 'JackMa',age:61},
  { 'name' : 'zhazhahui',age:48},
];

myList.sort((a, b) => (b.age).compareTo(a.age)); /// sort List<Map<String,dynamic>>

print(myList);
Run Code Online (Sandbox Code Playgroud)