【发布时间】:2017-12-25 07:34:24
【问题描述】:
如何将 dart 中的 2 个或更多地图合并/合并为 1 个地图? 例如我有类似的东西:
var firstMap = {"1":"2"};
var secondMap = {"1":"2"};
var thirdMap = {"1":"2"};
我想要:
var finalMap = {"1":"2", "1":"2", "1":"2"};
【问题讨论】:
标签: dart
如何将 dart 中的 2 个或更多地图合并/合并为 1 个地图? 例如我有类似的东西:
var firstMap = {"1":"2"};
var secondMap = {"1":"2"};
var thirdMap = {"1":"2"};
我想要:
var finalMap = {"1":"2", "1":"2", "1":"2"};
【问题讨论】:
标签: dart
你可以使用Map对象的addAll方法
var firstMap = {"1":"2"};
var secondMap = {"2":"3"};
var thirdMap = {};
thirdMap.addAll(firstMap);
thirdMap.addAll(secondMap);
print(thirdMap);
或者
var thirdMap = {}..addAll(firstMap)..addAll(secondMap);
自 dart sdk 2.3 起
您可以使用扩展运算符...
final firstMap = {"1":"2"};
final secondMap = {"2":"3"};
final thirdMap = {
...firstMap,
...secondMap,
};
【讨论】:
使用Map.addAll、Iterable.reduce 和cascading operator 的替代语法,用于组合大量地图:
var combinedMap = mapList.reduce( (map1, map2) => map1..addAll(map2) );
live dartpad 示例 https://dartpad.dartlang.org/9cd116d07d2f45a9b890b4b1186dcc5e
【讨论】:
另一个选项是使用来自package:collection 的CombinedMapView:
new CombinedMapView([firstMap, secondMap])
它不会创建一个合并的地图,而是创建一个Map,它是两者的视图。
【讨论】:
我想出了一个用于地图迭代的“单行”解决方案:
var finalMap = Map.fromEntries(mapList.expand((map) => map.entries));
【讨论】: