我想removeWhere在不影響原點變數的情況下使用第二個/臨時變數。
void main() {
Map<String, dynamic> testMap = {
'first': {'value': 1},
'second': {'value': 2},
'third': {'value': 3},
};
print(testMap);
Map<String, dynamic> tempMap = testMap;
tempMap.removeWhere((k,v) => v['value'] > 1);
print(testMap);
print(tempMap);
}
列印輸出將是:
{first: {value: 1}, second: {value: 2}, third: {value: 3}}
{first: {value: 1}}
{first: {value: 1}}
為什么會removeWhere影響原點變數?當我呼叫它時tempMap
編輯:正如 OMi Shah 在評論中所回應的那樣,最快的方法是:
Map<String, dynamic> tempMap = {...testMap};
uj5u.com熱心網友回復:
使用 Map.from
Map<String, dynamic> testMap = {
'first': {'value': 1},
'second': {'value': 2},
'third': {'value': 3},
};
Map<String, dynamic> tempMap = Map.from(testMap);
tempMap.removeWhere((k,v) => v['value'] > 1);
print(testMap);
print(tempMap);
uj5u.com熱心網友回復:
您需要創建一個新地圖。在您的特定情況下,我們可以從原始地圖創建一個新地圖,我們在創建時將過濾掉您不想要的鍵值對。
所以像這樣:
void main() {
Map<String, dynamic> testMap = {
'first': {'value': 1},
'second': {'value': 2},
'third': {'value': 3},
};
print(testMap); // {first: {value: 1}, second: {value: 2}, third: {value: 3}}
Map<String, dynamic> tempMap = {
for (final entry in testMap.entries)
if (entry.value['value'] <= 1) entry.key: entry.value
};
print(testMap); // {first: {value: 1}, second: {value: 2}, third: {value: 3}}
print(tempMap); // {first: {value: 1}}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/371749.html
標籤:镖
上一篇:如何將API顏色代碼(“#1db8ce”)值轉換為實際RGB顏色?
下一篇:flutter無法將引數型別'voidFunction(String)'分配給引數型別'voidFunction(String?)?'撲騰
