[英]Dart how to clone a List of Maps
I'm trying to get several values from a list of maps but whenever I alter the new List values, it also alters the same values in the original list of maps. 我试图从地图列表中获取多个值,但是每当我更改新的List值时,它也会同时更改原始地图列表中的相同值。
How can I clone the list properly so this doesn't happen? 如何正确克隆列表,以免发生这种情况?
final List<Map> entries = [
{'date': '2019-7-29', 'data': 85.0},
{'date': '2019-8-2', 'data': 85.0},
{'date': '2019-8-3', 'data': 85.0},
];
List<Map> getSelected() {
List<Map> obj = [];
for (var i = 0; i < 2; i++) {
obj.add(entries[i]);
obj[i]['data'] = obj[i]['data'] * 2;
}
return obj;
}
selected = getSelected();
EDIT: This was suggested but doesn't appear to fix things. 编辑:这是建议,但似乎无法解决问题。 I guess because objects are passed by reference.
我猜是因为对象是通过引用传递的。
List<Map> getSelected(List<Map> arr) {
List<Map> obj = [];
for (var i = 0; i < 2; i++) {
obj.add(arr[i]);
obj[i]['data'] = obj[i]['data'] * 2;
}
return obj;
}
selected = getSelected(entries);
final List<Map> entries = [
{'date': '2019-7-29', 'data': 85.0},
{'date': '2019-8-2', 'data': 85.0},
{'date': '2019-8-3', 'data': 85.0},
];
List<Map> selected = new List<Map>();
entries.forEach((map) => { selected.add(new Map.from(map)) });
selected.forEach((map) => map["data"] = map["data"] * 2 );
would solve your issue. 将解决您的问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.