dart - 按键值对对象映射进行排序

标签 dart

我有一个 JSON 对象,我需要按“SortOrder”键的值对其进行排序,但我不确定如何在 Dart 中执行此操作。

JSON:

"BTS": {
      "Id": "2039",,
      "SortOrder": "10001",
    },
"ETS": {
      "Id": "1039",,
      "SortOrder": "50",
    },
"RTS": {
      "Id": "39",,
      "SortOrder": "1",
    },
"TTS": {
      "Id": "139",,
      "SortOrder": "1001",
    },

按“SortOrder”键值对这些对象进行排序的正确方法是什么?

最佳答案

乔纳威廉姆斯方法的简短版本:

var newMap = Map.fromEntries(originalMap.entries.toList()..sort((e1, e2) =>
    int.parse(e1.value["SortOrder"]).compareTo(int.parse(e2.value["SortOrder"]))));
如果效率很重要,最好将“SortOrder”字符串解析为整数一次,或者使用对嵌入数字进行数值比较的字符串比较,例如 compareNatural来自包:集合。有了这个,代码将是:
var newMap = Map.fromEntries(originalMap.entries.toList()..sort((e1, e2) =>
    compareNatural(e1.value["SortOrder"], e2.value["SortOrder"])));

关于dart - 按键值对对象映射进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51235548/

相关文章:

flutter - 不处理流,而是将计数器流的值重置为0并再次收听

flutter - 使用Flutter打开数据库时出现意外的文字 'await'

dart - 用Dart编写计算

Flutter 小部件最佳实践 : Inner Class vs Function

ios - 如何修复 [!] 在 .symlinks/plugins/sms_maintained/ios 中找不到 sms_maintained 的 podspec

dart - Flutter Expansion Tile -- 标题颜色变化,尾随动画箭头颜色变化

flutter - 标签列表中一排排圆形按钮触发在一起

flutter - 创建索引增加的抖动色图

firebase - 无法将FLUTTER参数分配给参数类型

image - 如何从 Dart Flutter 中的图像中删除周围的空白?