Dart 将多个地图合并/合并为一个地图
如何将dart中的2个或多个地图合并/合并为1个地图? 例如,我有一些类似于:Dart 将多个地图合并/合并为一个地图,dart,Dart,如何将dart中的2个或多个地图合并/合并为1个地图? 例如,我有一些类似于: var firstMap = {"1":"2"}; var secondMap = {"1":"2"}; var thirdMap = {"1":"2"}; 我想: var finalMap = {"1":"2", "1":"2", "1":"2"}; 您可以使用Map对象的addAll方法 var firstMap = {"1":"2"}; var secondMap = {"2":"3"}; var
var firstMap = {"1":"2"};
var secondMap = {"1":"2"};
var thirdMap = {"1":"2"};
我想:
var finalMap = {"1":"2", "1":"2", "1":"2"};
您可以使用
Map
对象的addAll
方法
var firstMap = {"1":"2"};
var secondMap = {"2":"3"};
var thirdMap = {};
thirdMap.addAll(firstMap);
thirdMap.addAll(secondMap);
print(thirdMap);
或
更新
自dart sdk 2.3以来
您可以使用排列运算符…
final firstMap={“1”:“2”};
最后一个secondMap={“2”:“3”};
最终第三地图={
…第一张地图,
…第二张地图,
};
另一个选项是使用from包:collection
:
new CombinedMapView([firstMap, secondMap])
它不创建合并的映射,而是创建一个作为两者视图的
map
。使用map.addAll
,Iterable.reduce的替代语法,用于组合大量映射:
var combinedMap = mapList.reduce( (map1, map2) => map1..addAll(map2) );
实时dartpad示例
我为一系列地图想出了一个“单线”解决方案:
var finalMap = Map.fromEntries(mapList.expand((map) => map.entries));
但是没有办法将它们合并到一行中吗?var finalMap={}..addAll(firstMap)…addAll(secondMap)…addAll(thirdMap)@HarryTerkelsen,你的反馈非常有用,这在将贴图与内部贴图展开操作符相结合时不起作用……wowHaving dartpad在这方面非常棒,非常清楚地显示了它是如何工作的,我可以使用这些值。谢谢
var finalMap = Map.fromEntries(mapList.expand((map) => map.entries));