arrays - 从结构中获取相同标签的值的总和
问题描述
我需要从此信息中将未出现的添加到数组中。如果有重复,这笔钱将被汇总然后存入一个。我怎样才能做到这一点?数据可能很多。
import UIKit
struct TestData {
let Label : String
var Money : Double
}
var SaveDate = [TestData]()
var TestD = [TestData]()
SaveDate.append(TestData(Label: "test1", Money: 55))
SaveDate.append(TestData(Label: "test1", Money: 35))
SaveDate.append(TestData(Label: "test2" , Money: 15))
SaveDate.append(TestData(Label: "test1" , Money: 10))
SaveDate.append(TestData(Label: "test3" , Money: 30))
print([{Label "test1", Money 55}, {Label "test1", Money 35}, {Label "test2", Money 15},{Label "test1", Money 10}, {Label "test3", Money 30}])
//Result presentation
//Label1 = test1 , Money = 100
//Label2 = test2 , Money = 15
//Label3 = test3 , Money = 30
解决方案
就这么简单。
let dict = SaveDate.reduce(into: [String: Double]()) { (result, data) in
result[data.Label, default: 0] += data.Money
}
或者更简洁地说,
let dict = SaveDate.reduce(into: [String: Double]()) { $0[$1.Label, default: 0] += $1.Money }
听写
// ["test2": 15.0, "test3": 30.0, "test1": 100.0]
注意:您应该按照Swift API 指南使用lowerCamelCase作为变量名。
推荐阅读
- linux - Systemtap 在父进程退出后监控子进程
- kubernetes - 没有创建命名空间 pod/istio-ingressgateway-bd5994d9f-p9chd 的 Istio 容器
- c++ - 在类成员变量 std::array 中使用 {} 会导致初始化数组元素吗?
- r - 在 dplyr (!!paste0, {{}}, as.name(), eval(parse(text=)
- javascript - CKEditor4 Laravel 不解析 HTML,而是输出标签,如
,
- chatbot - 使用带有预定义问题和答案的 Amazon Lex 创建简单的问答聊天机器人
- java - 在 Java 中 subClass 和 SuperClass 具有相同的属性会发生什么?
- python - 如何使用 websocket-client 发送 keepalive 请求?
- socket.io - socket.io 中存储的聊天消息在哪里
- reactjs - 如何在 React 中使用新值更新预填充的输入字段