gpt4 book ai didi

list - Dart 如何克隆 map 列表

转载 作者:IT王子 更新时间:2023-10-29 07:15:42 26 4
gpt4 key购买 nike

我试图从 map 列表中获取多个值,但每当我更改新列表值时,它也会更改原始 map 列表中的相同值。

我怎样才能正确地克隆列表,以免发生这种情况?

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();

编辑:有人建议这样做,但似乎没有解决问题。我猜是因为对象是通过引用传递的。

  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 );

将解决您的问题。

关于list - Dart 如何克隆 map 列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57443085/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com