如何在飞镖/颤振中基于一个键合并两个对象数组 [英] How to merge two array of objects based on a key in Dart/Flutter
本文介绍了如何在飞镖/颤振中基于一个键合并两个对象数组的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有两个映射数组,一个有产品ID和数量,另一个有产品ID、产品名称和价格:
List<Map<String, dynamic>> arr1 = [
{ id: "1", name:"First Item", price: 10 },
{ id: "2", name: "Second Item", price: 12 }
];
List<Map<String, dynamic>> arr2 = [
{ id: "1", quantity: 1 },
{ id: "2", quantity: 3 },
{ id: "3", quantity: 2 }
];
现在我需要将两个数组合并,得到价格*数量之和,从而得到产品的总价。
我需要一个类似以下内容的数组:
List<Map<String, dynamic>> arr3 =[
{ id: "1", name:"First Item", price: 10, quantity: 1 },
{ id: "2", name: "Second Item", price: 12, quantity: 3 }
];
如何根据它们的ID将它们合并到一个数组中?
推荐答案
您可以通过将第一个数组映射到第二个数组来合并数组。
final arr3 = arr1.map((product) {
final quantity = arr2
.where((quantities) => quantities["id"] == product["id"])
.map((quantities) => quantities["quantity"] as int)
.first;
return product..["quantity"] = quantity;
});
完整示例:https://dartpad.dev/67148d132cb930bc6f1cee6a8a4fcff1
这篇关于如何在飞镖/颤振中基于一个键合并两个对象数组的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文