Hoe kan ik 2 of meer kaarten in dart combineren/samenvoegen tot 1 kaart?
ik heb bijvoorbeeld zoiets als:
var firstMap = {"1":"2"};
var secondMap = {"1":"2"};
var thirdMap = {"1":"2"};
Ik wil:
var finalMap = {"1":"2", "1":"2", "1":"2"};
Antwoord 1, autoriteit 100%
u kunt de addAll
methode van het Map
object
gebruiken
var firstMap = {"1":"2"};
var secondMap = {"2":"3"};
var thirdMap = {};
thirdMap.addAll(firstMap);
thirdMap.addAll(secondMap);
print(thirdMap);
Of
var thirdMap = {}..addAll(firstMap)..addAll(secondMap);
Bijwerken
Sinds dart sdk 2.3
U kunt spread-operator ...
. gebruiken
final firstMap = {"1":"2"};
final secondMap = {"2":"3"};
final thirdMap = {
...firstMap,
...secondMap,
};
Antwoord 2, autoriteit 8%
andere syntaxis met behulp van Map.addAll
, Iterable.reduce
en cascade-operator, voor het combineren van veel kaarten:
var combinedMap = mapList.reduce( (map1, map2) => map1..addAll(map2) );
voorbeeld live dartpad
https://dartpad.dartlang.org/9cd116d07d2f45a9b890b4b1186dcc5e
Antwoord 3, autoriteit 5%
Een andere optie is het gebruik van CombinedMapView
uit package:collection
:
new CombinedMapView([firstMap, secondMap])
Er wordt geen samengevoegde kaart gemaakt, maar een Map
die een weergavevan beide is.
Antwoord 4, autoriteit 3%
Ik heb een “single line”-oplossing bedacht voor een Iterable of Maps:
var finalMap = Map.fromEntries(mapList.expand((map) => map.entries));