You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Dart中如何查找Map<Object?, Object?>最大值对应的键

实现方案

直接补全赋值逻辑即可,适配键名不固定、Map可空的场景,运行后示例中highestValue将正确得到"Luke"的结果。

String? highestValue;
   
Map<Object?, Object?>? points =
     {
       "Vader": 40,
       "Obi-Wan": 20,
       "Luke": 50,
     };
   
highestValue = points?.entries
    .reduce((curr, next) {
      final currValue = (curr.value as num?) ?? 0;
      final nextValue = (next.value as num?) ?? 0;
      return currValue > nextValue ? curr : next;
    })
    .key as String?;

逻辑细节

  • 用?.安全符处理points为null的边界,此时highestValue会直接返回null,不会触发空指针错误
  • 对Map的value做了类型兼容处理,将Object?类型的value转为数字类型,null或非数字值默认按0计算,避免类型转换异常
  • 遍历过程中逐条对比键值对的value大小,始终保留value更大的条目,全程不需要依赖固定键名
  • 如果存在多个value同为最大值的条目,逻辑会返回遍历顺序中第一个出现的最大值对应键
  • 若需要兼容空Map场景,可以在调用reduce前增加空Map判断,空场景直接赋值null即可

内容的提问来源于stack exchange,提问作者Bernhard

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 20:09:10