如何在飞镖中订购地图列表

How to order a list of maps in dart

我要订一张地图清单,我能想到的都试过了,没有突破。

这是我的代码:

var orgs = [
  {"name": "Google", "category": "Search Engine"},
  {"name": "Facebook", "category": "Social Media"},
  {"name": "Adidas", "category": "Sports"}
];

我想按名称对列表进行排序。我尝试使用此代码:

  orgs.sort((i, j) => i.name.compareTo(j.name)); //I get an error that name is not defined. only works with classes

但是我得到一个错误,名称未定义。我究竟做错了什么?或者我可以尝试另一种方法吗?请协助

顺便说一下,重要的是 orgs 是一个严格的列表,而不是其他任何东西!

这应该可以解决您的问题:

 orgs.sort((i, j) => i["name"]!.compareTo(j["name"]!));

P.S确保对象中始终存在键“name”。

你的排序是比较地图,所以需要使用key语法。

orgs.sort((i, j) => i['name']?.compareTo(j['name'] ?? "") ?? 1);

解决方案是将数组定义为地图列表


List<Map<String, dynamic>> orgs = [
  {"name": "Google", "category": "Search Engine"},
  {"name": "Facebook", "category": "Social Media"},
  {"name": "Adidas", "category": "Sports"}
];

这样就可以排序了:

orgs.sort((a, b) => a["name"].compareTo(b["name"]));

答案:

[{name: Adidas, category: Sports}, 
{name: Facebook, category: Social Media}, 
{name: Google, category: Search Engine}]