arrays - 如何对数组元素 int Dart 求和
问题描述
我有一个看起来像这样的数组
final value = [
{
'category': 'Social Life',
'data': [
{'amount': 2000, 'content': 'thanks'}
]
},
{
'category': 'Food',
'data': [
{'amount': 2000, 'content': 'thanks'},
{'amount': 2000, 'content': 'thanks'}
]
}
]
想用fold()
方法计算每个类别的数量,但是不知道怎么实现
我希望它们在我的新变量中看起来像这样
final newValue = [
{
'category': 'Social Life',
'amount': //the amount for 'Social Life' category,
},
{
'category': 'Food',
'amount': //the amount for 'Food' category,
}
]
解决方案
这应该可以解决问题。
void main() {
final value = [
{
'category': 'Social Life',
'data': [
{'amount': 2000, 'content': 'thanks'}
]
},
{
'category': 'Food',
'data': [
{'amount': 2000, 'content': 'thanks'},
{'amount': 2000, 'content': 'thanks'}
]
}
];
print(combineData(value));
// [{category: Social Life, amount: 2000}, {category: Food, amount: 4000}]
}
List<Map<String, Object>> combineData(List<Map<String, Object>> value) => value
.map((entry) => {
'category': entry['category'],
'amount': (entry['data'] as List<Map<String, Object>>).fold<int>(
0, (prev, element) => prev + (element['amount'] as int))
})
.toList();
推荐阅读
- react-native - 为什么我会收到“redux-persist/createPersistoid:错误序列化状态”?
- java - 我想创建一个动态索引不是从 0 开始的 ArrayList
- php - 两次单击链接或刷新页面 Laravel 后 cookie 设置新值
- google-cloud-platform - Google Vision object_localization 是否可以搜索特定的 Google Grpah 对象?
- django - 自定义 DRF 权限的最后一行是什么意思
- php - 如何使用多标签系统在一个页面上放置多个表格?
- python - 如何在 flask-WTF 和 wtforms 的字符串字段中输入新行/多行
- mysql - 如何将 2 个表连接到包含主键的第三个表?
- python - 如何知道混淆矩阵的实际标签顺序?
- django - Django LoginView 打印用户输入