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

如何按num类型属性noteValue对Mark对象列表降序排序?

按noteValue对Mark列表排序实现学生排名(Dart)

要实现按noteValue从高到低(第一名到最后一名)排序,核心是利用Dart中List的sort方法,结合自定义比较逻辑,同时处理noteValue为null的边界情况:

基础实现(兼容null值)

考虑到noteValue是可空类型,我们可以将null视为最低分(排在所有有分数的学生之后),代码示例如下:

marks.sort((a, b) {
  // 将null的分数转换为负无穷,确保这类对象排在最后
  final num aScore = a.noteValue ?? double.negativeInfinity;
  final num bScore = b.noteValue ?? double.negativeInfinity;
  // 降序排序:用b的分数与a的分数比较,分数高的对象排在前面
  return bScore.compareTo(aScore);
});

简化实现(确保无null值场景)

如果能保证所有Mark对象的noteValue都不为null,可以简化代码:

marks.sort((a, b) => b.noteValue!.compareTo(a.noteValue!));

特殊需求调整

  • 若要将noteValue为null的学生排在最前面,只需把double.negativeInfinity替换为double.infinity即可。
  • 若需要稳定排序(分数相同的学生保持原列表中的相对顺序),由于Dart原生sort是不稳定排序,可借助第三方包(如collection)中的stableSort方法,或手动实现稳定排序逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 14:36:21