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

Dart中如何访问对象列表的元素属性并按指定属性排序

解决方案

访问索引为0的元素的score属性

Dart 列表支持直接通过下标访问对应位置的元素,不需要额外用for循环,直接用如下代码即可打印对应属性:

print(itemList[0].score);

如果需要遍历所有元素打印score,才需要用到for循环,示例如下:

// 遍历打印所有元素的score
for (var item in itemList) {
  print(item.score);
}

按score字段从高到低排序列表

调用List自带的sort方法传入自定义比较逻辑即可实现排序,代码如下:

// 直接修改原列表的排序
itemList.sort((a, b) => b.score.compareTo(a.score));

如果不希望修改原列表,可以先拷贝一份再排序:

// 生成新的排序后列表,原列表不变
var sortedList = List<ItemData>.from(itemList)..sort((a, b) => b.score.compareTo(a.score));

注意:如果你的score字段可能为null,需要补充空值判断,比如用b.score ?? 0替代b.score,避免空指针异常。

完整可运行测试代码

class ItemData {
  var id;
  var score;
  var title;
  var description;

  ItemData({this.id, this.score, this.title, this.description});
}

void main() {
  // 构造测试数据
  var itemList = [
    ItemData(id: 1, score: 30, title: 'mock title1', description: 'mock description1'),
    ItemData(id: 2, score: 80, title: 'mock title2', description: 'mock description2'),
    ItemData(id: 3, score: 50, title: 'mock title3', description: 'mock description3'),
  ];

  // 打印索引0的score
  print('索引0元素的score:${itemList[0].score}');

  // 按score从高到低排序
  itemList.sort((a, b) => b.score.compareTo(a.score));

  // 遍历打印排序后所有元素的score
  print('排序后所有元素的score:');
  for (var item in itemList) {
    print(item.score);
  }
}

运行输出结果:

索引0元素的score:30
排序后所有元素的score:
80
50
30

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 17:15:04