首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Dart如何克隆映射列表

Dart如何克隆映射列表
EN

Stack Overflow用户
提问于 2019-08-10 22:40:45
回答 1查看 183关注 0票数 0

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

我怎样才能正确克隆列表,这样才不会发生这种情况?

代码语言:javascript
复制
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();

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

代码语言:javascript
复制
  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);
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-08-11 00:04:22

代码语言:javascript
复制
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 );

就能解决你的问题。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57443085

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档