📜  从 dart 中的特定映射键降序排序列表(1)

📅  最后修改于: 2023-12-03 15:21:52.284000             🧑  作者: Mango

从 Dart 中的特定映射键降序排序列表

在 Dart 中,有时需要按特定的 key 值来对列表进行降序排序。本文将介绍如何实现这个功能。

首先我们需要一个包含 key 值的列表,下面是一个例子:

final List<Map<String, dynamic>> list = [
  {'name': 'Alice', 'age': 25},
  {'name': 'Bob', 'age': 30},
  {'name': 'Charlie', 'age': 20},
  {'name': 'David', 'age': 35},
];

我们要按照 'age' key 的值进行降序排序,可以使用 Dart 内置的 List.sort() 方法,同时传入一个自定义的比较函数:

list.sort((a, b) => b['age'].compareTo(a['age']));

这个比较函数中,b['age'] 表示列表中的后一个元素的 'age' key 值,a['age'] 表示列表中的前一个元素的 'age' key 值。compareTo() 方法是 Dart 内置的比较方法,返回值为 1 表示后一个值大于前一个值,返回值为 -1 则表示后一个值小于前一个值。

得到排序后的结果:

[
  {'name': 'David', 'age': 35},
  {'name': 'Bob', 'age': 30},
  {'name': 'Alice', 'age': 25},
  {'name': 'Charlie', 'age': 20},
]

我们也可以对其他类型的 key 值进行排序,只需要将比较函数中的 ['age'] 替换为对应的键名即可。

上述程序代码片段如下:

final List<Map<String, dynamic>> list = [
  {'name': 'Alice', 'age': 25},
  {'name': 'Bob', 'age': 30},
  {'name': 'Charlie', 'age': 20},
  {'name': 'David', 'age': 35},
];

list.sort((a, b) => b['age'].compareTo(a['age']));

print(list);
// [
//   {'name': 'David', 'age': 35},
//   {'name': 'Bob', 'age': 30},
//   {'name': 'Alice', 'age': 25},
//   {'name': 'Charlie', 'age': 20},
// ]