如何在飞镖中订购地图列表
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}]
我要订一张地图清单,我能想到的都试过了,没有突破。
这是我的代码:
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}]