我是 Dart 的新手,我在這一點上被困了好幾天。
我有多個地圖,這些地圖遵循相同的模式(日期:值),但它們的長度不同。并且這些地圖是動態增加的。
例如:
Map1:{01.01.2021:2,02.01.2021:5,03.01.2021:3},
Map2:{02.01.2021:10,03.01.2021:4,04.01.2021:8},
Map3...
Map4...
...
我想組合這些映射并對包含相同鍵的值求和并將其存盤在另一個映射中。對于不同的鍵,將不會按原樣進行計算和存盤。
Map1 和 Map2 的結果:
Combined Map{01.01.2021:2,02.01.2021:(5 3),03.01.2021:(3 4),04.01.2021:8}
考慮到這些映射在類內或另一個串列內可迭代,我如何執行這樣的操作。
先感謝您。
uj5u.com熱心網友回復:
干得好!將此粘貼到DartPad 上
這將適用于地圖內的任意數量的data地圖
任何問題都可以在評論中問我。
void main() {
final data = {
'Map1': {'01.01.2021':2,'02.01.2021':5,'03.01.2021':3},
'Map2': {'02.01.2021':10,'03.01.2021':4,'04.01.2021':8},
};
final finalData = {};
for(final key in data.keys) {
for(final date in data[key]!.keys) {
final initialValue = finalData[date];
if(initialValue == null) {
finalData[date] = data[key]![date];
} else {
finalData[date] = initialValue data[key]![date];
}
}
}
// {01.01.2021: 2, 02.01.2021: 15, 03.01.2021: 7, 04.01.2021: 8}
print(finalData);
}
可以使用三級運算子更簡潔地撰寫內部回圈
for (final date in data[key]!.keys) {
final initialValue = finalData[date];
finalData[date] = initialValue == null
? data[key]![date]
: initialValue data[key]![date];
}
或空感知運算子 (??)
for (final date in data[key]!.keys) {
finalData[date] = data[key]![date]! (finalData[date] ?? 0);
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/382769.html
