我是顫振/飛鏢的新手,只有當它們之間存在關鍵匹配時,我才必須用另一個地圖替換一個地圖,否則保持第一個地圖不變。這應該像 PHP 中的 array_replace_recursive() 函式一樣作業。
這是代碼示例:
map1 = {
"t":{
"l":{
"-2":{
"n":"rocky",
"e":"[email protected]",
"r":"23567"
}
},
"o":{
"xyz":{
"p":"hi",
"x":"cdcbcbk"
}
}
},
"lang":{
"eng":"english",
"spn":"spanish"
}
"sc":{
"math"{
"lb":"30",
"pr":"60"
}
}
}
我必須用
map2 = {
"t":{
"l":{
"-2":{
"n":"rohit",
}
},
},
}
預期輸出應該是
finalMap = {
"t":{
"l":{
"-2":{
"n":"rohit",
"e":"[email protected]",
"r":"23567"
}
},
"o":{
"xyz":{
"p":"hi",
"x":"cdcbcbk"
}
}
},
"lang":{
"eng":"english",
"spn":"spanish"
}
"sc":{
"math"{
"lb":"30",
"pr":"60"
}
}
}
謝謝
uj5u.com熱心網友回復:
檢查一次,根據您的規范進行更改
replaceIfSame(Map a,Map b){
b.keys.forEach((k){
if(a.containsKey(k)){
if(a[k] is Map && b[k] is Map){
replaceIfSame(a[k],b[k]);
}
else{
a[k] = b[k];
}
}
});
}
這里replaceIfSame是一個函式,我呼叫它遞回地傳遞地圖作為輸入。
如果不是這種情況,請指定。
干杯!!
uj5u.com熱心網友回復:
我嘗試了以下方法,它也給出了相同的結果,但我不確定它是否有效
Map<dynamic, dynamic> mergemap(Map map1, Map map2) {
map2.forEach((k, v) {
if (map1.containsKey(k)) {
if (v.runtimeType != String) {
mergemap(map1[k], v);
} else {
map1[k] = v;
}
}
});
return map1;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/464849.html
