flutter - Dart 在嵌套数据类上使用折叠来获取计数总和
问题描述
在这里我有多个嵌套类数据,我想得到总和SelectedProductServices.count
我的数据类开始于OrderStructure
其中有一个列表,SelectedProducts
并且它们每个都有SelectedProductServices
哪些计数在这里。现在我该如何使用fold
或reduce
获取它们的总和?
例如:
order.products.map((p)=>p.services.fold(0,(a,b)=>a!+b))
应该返回600
我的代码:
void main() {
OrderStructure order = OrderStructure('test',<SelectedProducts>[
SelectedProducts(
1, <SelectedProductServices>[
const SelectedProductServices(1, 100, 1),
const SelectedProductServices(1, 500, 1),
]
)
]);
getSum();
}
void getSum(){
return order.products.map((p)=>p.services.fold(0,(a,b)=>a!+b));
}
class OrderStructure {
final String title;
final List<SelectedProducts> products;
const OrderStructure(this.title, this.products);
}
class SelectedProducts {
final int id;
final List<SelectedProductServices> services;
SelectedProducts(this.id, this.services);
@override
bool operator ==(other) => other is SelectedProducts && other.id == id;
@override
int get hashCode => id.hashCode;
}
class SelectedProductServices {
final int id;
final int count;
final int cost;
const SelectedProductServices(this.id, this.count, this.cost);
}
解决方案
由于您有嵌套列表,因此您必须折叠两次才能获得单个值:
int getSum(){
int sum(int a, SelectedProductServices s) => a + s.count;
return order.products.map((p) => p.services.fold(0, sum)).fold(0, (a,b) => a + b);
}
推荐阅读
- python - 从 CPython 文档中澄清“应该可以更改 1 的值”
- linux-kernel - 针对内核源代码交叉编译为 arm64,找不到头文件
- javascript - How to sort a multidimensional string array
- android-studio - Sharedpref 数据销毁
- winapi - DPI 从资源缩放一个完整的对话框
- oracle - 使用 DECLARE 变量在 Oracle PL/SQL 上执行 PROCEDURE
- python - 如何在python中将jpeg转换为tiff文件
- google-cloud-platform - VPC 内部的谷歌云功能?
- c# - 找不到 WebHook 接收器的有效配置
- sql - 将数据从服务器复制到另一台服务器