void main() {
Map firstMap = { "id": 1, "value": [{"key": "A"}, {"key": "B"}]};
List<Map> newList = [];
List valueList = firstMap["value"];
for(int y=0; y<valueList.length; y++) {
Map newMap = firstMap;
newMap["value"] = [{"key": valueList[y]["key"]}];
newList.add(newMap);
}
print(newList);
}
我对newList
的期望是:
[{id: 1, value: [{key: A}]}, {id: 1, value: [{key: B}]}]
但newList的实际值为
[{id: 1, value: [{key: B}]}, {id: 1, value: [{key: B}]}]
我不确定要在这里尝试什么。
valueList[y]["key"]
在每次迭代中似乎都具有正确的值。
上面的代码已共享为此处的飞镖垫的链接。
我将如何实现相同目标?也是我的代码发生了什么,导致了这样的结果。
答案 0 :(得分:1)
您所做的错误已在注释中提及,重新分配给其他变量不会复制数据:
Map a = {"a": 1}
Map b = a; // b is just one more reference to same object
b["a"] = 2;
print(a); // -> {"a": 2}
使用map()
可以方便地完成从一种形状到另一种形状的转换。https://dartpad.dartlang.org/8283e91c2c201ddb65ef073e76995f1d
void main() {
Map firstMap = { "id": 1, "value": [{"key": "A"}, {"key": "B"}]};
List valueList = firstMap["value"];
List<Map> newList = valueList.map((valueItem) => {
"id": firstMap["id"],
"value": [valueItem]
}).toList();
print(newList);
}