【问题标题】:Dart maps, how to replace specific key value in a list<map> based on its key id?Dart 映射,如何根据其键 id 替换 list<map> 中的特定键值?
【发布时间】:2021-03-20 14:20:19
【问题描述】:
void main() {
  List<Map<String, dynamic>> products = [
    {'id': 24, 'time': '2019-11-24 00:00:00.000'},
    {'id': 36, 'time': '2019-11-23 00:00:00.000'},
    {'id': 48, 'time': '2019-11-24 00:00:00.000'},
  ];

在上面的代码中,我想将“时间”条目“2019-11-24 00:00:00.000”替换为“id”48 的“2019-10-26 00:00:00.000”。

【问题讨论】:

  • 如果 id 是唯一的,则说明数据结构错误。它应该是一个以 id 为键的 Map。替换它将是一个简单的任务。遍历列表以查找特定列表几乎总是一种代码味道。

标签: list flutter dictionary dart


【解决方案1】:

你可以试试这样的:

   products.where((x) => x["id"] == 48).first["time"] = "2019-10-26 00:00:00.000";

【讨论】:

  • @Akif,你的回答非常有用。
  • 谢谢你,@Ketan Ramteke :)
【解决方案2】:

这是另一种方法:

    void main() { 
      List<Map<String, dynamic>> products = [
        {'id': 24, 'time': '2019-11-24 00:00:00.000'},
        {'id': 36, 'time': '2019-11-23 00:00:00.000'},
        {'id': 48, 'time': '2019-11-24 00:00:00.000'},
      ];
      
       products = products.map((product){
        if(product["id"] == 48){
          return {...product, 'time': '2019-10-26 00:00:00.000'};
        }
         return product;
      }).toList();
      
      print(products.toString());
    }

【讨论】:

  • 谢谢亲爱的,“返回 {...product, 'time': '2019-10-26 00:00:00.000'};”为我工作:)
  • 很高兴它有帮助,编码愉快。
猜你喜欢
  • 2021-02-08
  • 2020-08-23
  • 2023-03-16
  • 2018-12-07
  • 1970-01-01
  • 2021-02-25
  • 1970-01-01
  • 2012-02-26
  • 1970-01-01
相关资源
最近更新 更多