ios - 从 SwiftUI 中的数组中提取唯一项和计算
问题描述
我正在尝试在我的 SwiftUI 应用程序中创建一个 Metrics 视图。我正在构建它,以便我可以跟踪我玩的扑克游戏。每个 Session 模型如下所示:
struct PokerSession: Hashable, Codable, Identifiable {
var id = UUID()
let location: String
let game: String
let stakes: String
let date: Date
let profit: Int
let notes: String
let imageName: String
let startTime: Date
let endTime: Date
在我的指标视图中,我想遍历存储在以下类型数组中的所有会话: [PokerSession] 显示所有唯一位置及其相应利润总额的列表。这就是我的代码现在的样子,显然无法正常工作,因为我得到了重复的位置:
List {
ForEach(viewModel.sessions) { location in
HStack {
Text(location.location)
Spacer()
Text("$500")
.bold()
.foregroundColor(.green)
}
}
.navigationBarTitle(Text("Profit by Location"))
}
有谁知道我如何获取独特的位置并计算他们的总利润?非常感谢!
解决方案
我的解决方案是从您的大多数回复中借用的,感谢您的反馈。下面是工作的最终代码,能够避免创建字典,而是依赖于 map 和 reduce。
List {
ForEach(viewModel.uniqueLocations, id: \.self) { location in
HStack {
Text(location)
Spacer()
Text("$" + "\(viewModel.sessions.filter({$0.location == location}).reduce(0) { $0 + $1.profit})")
.bold()
.foregroundColor(.green)
}
}
.navigationBarTitle(Text("Profit by Location"))
}
推荐阅读
- javascript - Variable assignment in class scope works in React but not in ES6
- reactjs - onClick 事件时翻转图像
- c - 得到无符号长长加法进位
- r - R:grepl 以错误的顺序输出匹配项
- javascript - 如何使用数组中的特定值显示新窗口
- vue.js - REST API Patch 调用后如何刷新 v-data-table?
- reactjs - 如何解决 TypeError: Cannot read property 'then' of undefined 的问题?
- android - Android Periodic WorkManager 未触发
- r - 为什么 cSplit 返回 TRUE 而不是字符
- ios - var 迟到不醒来