flutter - 对列表中的值求和并删除重复项

标签 flutter dart

我有这个列表,想要求和并删除列表中的重复项

1 - 检查产品名称

2 - 如果产品名称等于,则对 NumberOfItems 求和

例如:

"Orders":[
    {
        "productName":"Apple",
        "NumberOfItems":"5"
    },
    {
        "productName":"Orange",
        "NumberOfItems":"2"
    },
    {
        "productName":"Egg",
        "NumberOfItems":"5"
    },
    {
        "productName":"Apple",
        "NumberOfItems":"3"
    },
    {
        "productName":"Orange",
        "NumberOfItems":"4"
    },
    {
        "productName":"Egg",
        "NumberOfItems":"9"
    },
]

我需要的结果如下所示:(总和取决于产品名称)

"Orders":[
    {
        "productName":"Apple",
        "NumberOfItems":"8"
    },
    {
        "productName":"Orange",
        "NumberOfItems":"6"
    },
    {
        "productName":"Egg",
        "NumberOfItems":"14"
    },
]

最佳答案

final orders = data["Orders"] as List;
final mapped = orders.fold<Map<String, Map<String, dynamic>>>({}, (p, v) {
  final name = v["productName"];

  if (p.containsKey(name)) {
    p[name]["NumberOfItems"] += int.parse(v["NumberOfItems"]);
  } else {
    p[name] = {
      ...v,
      "NumberOfItems": int.parse(v["NumberOfItems"])
    };
  }

  return p;
});

final newData = {
  ...data,
  "Orders": mapped.values,
};

print(newData);

结果是:

{Orders: ({productName: Apple, NumberOfItems: 8}, {productName: Orange, NumberOfItems: 6}, {productName: Egg, NumberOfItems: 14})}

关于flutter - 对列表中的值求和并删除重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58787836/

相关文章:

flutter - Flutter 照片管理的最佳方式

flutter - 在dart中执行搜索操作时如何忽略类中的某些变量

xcode - 模块映射文件 '/Users/"my_flutter_project_path"/ios/Pods/Headers/Private/openssl_grpc/BoringSSL-GRPC.modulemap' 未找到?

dart - Dart 中没有SuchMethod?

flutter - 如何使 ReorderableListView ListTile 在 Flutter 的按钮/图标按下时可拖动?

Flutter:如何使用多个流组合

android - Flutter - SingleScrollView 不在堆栈/列内滚动

flutter - 如何在 Flutter 中正确重用 Provider

dart - flutter/dart 是否可以作为原生应用程序在桌面上运行?

flutter - 如何查看特定版本的 Flutter API 网站?