我有一个 JSON 对象,我需要按“SortOrder”键的值对其进行排序,但我不确定如何在 Dart 中执行此操作。
JSON:
"BTS": {
"Id": "2039",,
"SortOrder": "10001",
},
"ETS": {
"Id": "1039",,
"SortOrder": "50",
},
"RTS": {
"Id": "39",,
"SortOrder": "1",
},
"TTS": {
"Id": "139",,
"SortOrder": "1001",
},
Run Code Online (Sandbox Code Playgroud)
按“SortOrder”键值对这些对象进行排序的正确方法是什么?
乔纳威廉姆斯方法的简短版本:
var newMap = Map.fromEntries(originalMap.entries.toList()..sort((e1, e2) =>
int.parse(e1.value["SortOrder"]).compareTo(int.parse(e2.value["SortOrder"]))));
Run Code Online (Sandbox Code Playgroud)
如果效率很重要,最好将“SortOrder”字符串解析为整数一次,或者使用对嵌入数字进行数值比较的字符串比较,例如package:collection 中的compareNatural。有了这个,代码将是:
var newMap = Map.fromEntries(originalMap.entries.toList()..sort((e1, e2) =>
compareNatural(e1.value["SortOrder"], e2.value["SortOrder"])));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4328 次 |
| 最近记录: |