arrays - 从结构体中获取相同标签的值的总和

标签 arrays swift generics struct

我需要将未出现的信息添加到数组中。如果有重复的,就把钱加起来,然后存入一张。我怎样才能实现这个目标?数据可能很多。

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 }

dict

// ["test2": 15.0, "test3": 30.0, "test1": 100.0]


注意:您应该按照Swift API guidelines使用lowerCamelCase作为变量名称。 .

关于arrays - 从结构体中获取相同标签的值的总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54273805/

相关文章:

objective-c - 查找枚举的未使用情况 (Objective-C/Swift)

ios - 如何缩放和定位附加了 SCNSkinner 的 SCNNode?

C# 泛型约束 : Array of Structs

java - 将现有泛型转换为菱形语法

javascript - 纯 JavaScript : How to check if 1) array A has any elements of array B and 2) if array A has any elements array B doesn't have

php - 具有相同名称的多个输入字段。如何将它们全部保存到数据库中

swift - 无法使用类型为 '' 的参数列表调用 ''

generics - 在 Dart 中,子类如何扩展父类(super class),让子类的泛型类型扩展父类(super class)的类型?

php - "Notice: Undefined variable"、 "Notice: Undefined index"、 "Warning: Undefined array key"和 "Notice: Undefined offset"使用 PHP

javascript - hasMany 关系中的 Ember 数据可变数组