我有一個檔案,其中包含在 firebase 中生成的欄位,欄位名稱是今天的日期,值是用戶在應用程式中執行特殊操作時使用的增量。
當我從 Firebase 檢索資料時,我的 Map<String, dynamic> 統計資訊;由于如何從 firebase 檢索資料,因此以隨機順序填充。
如何按鍵值(字串)對回傳的資料進行排序,以便日期按升序排列?
我就是想不通。非常感謝任何提示指標。
uj5u.com熱心網友回復:
兄弟,它key:value不存在order這樣的東西,所以它不能排序。這是一個地圖,只需呼叫鍵并回傳值。
如果你真的想這樣做。獲取keys地圖并排序,使用排序鍵按順序創建新地圖。
void main() {
var map = {"b": {}, "d": {}, "a": {}, "h": {}, "f": {}, "c": {}};
var newmap = {};
var keys = [...map.keys]..sort((a, b) => a.compareTo(b));
for (String key in keys) {
newmap[key] = map[key];
}
print("oldmap: $map");
print("newmap: $newmap");
// result
// oldmap: {b: {}, d: {}, a: {}, h: {}, f: {}, c: {}}
// newmap: {a: {}, b: {}, c: {}, d: {}, f: {}, h: {}}
}

uj5u.com熱心網友回復:
var sortedKeys = map.keys.toList()..sort();
試試這個或使用下面的插件
sortedmap: ^0.5.1
匯入“包:sortedmap/sortedmap.dart”;
main() {
var map = new SortedMap(Ordering.byValue());
map.addAll({
"a": 3,
"b": 2,
"c": 4,
"d": 1
});
print(map.lastKeyBefore("c")); // a
print(map.firstKeyAfter("d")); // b
}
import 'package:sortedmap/sortedmap.dart';
main() {
var map = new FilteredMap(new Filter(
compare: (Pair a, Pair b)=>Comparable.compare(a.value, b.value),
isValid: (Pair v) => v.key!="b",
limit: 2));
map.addAll({
"a": 3,
"b": 2,
"c": 4,
"d": 1
});
print(map.keys); // (d, a)
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/466775.html
