Dart 映射,如何根据其键 id 替换 list<map> 中的特定键值?
Posted
技术标签:
【中文标题】Dart 映射,如何根据其键 id 替换 list<map> 中的特定键值?【英文标题】:Dart maps, how to replace specific key value in a list<map> based on its key id? 【发布时间】: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。替换它将是一个简单的任务。遍历列表以查找特定列表几乎总是一种代码味道。 【参考方案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';”为我工作:) 很高兴它有帮助,编码愉快。以上是关于Dart 映射,如何根据其键 id 替换 list<map> 中的特定键值?的主要内容,如果未能解决你的问题,请参考以下文章
打字稿:如何制作接受对象的类型,其键匹配通用但所有值都是值参数的映射函数