📅  最后修改于: 2023-12-03 15:21:52.284000             🧑  作者: Mango
在 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},
// ]