如何在飞镖/颤振中基于一个键合并两个对象数组 [英] How to merge two array of objects based on a key in Dart/Flutter

查看:25
本文介绍了如何在飞镖/颤振中基于一个键合并两个对象数组的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有两个映射数组,一个有产品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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆