首页 > 解决方案 > 从结构中获取相同标签的值的总和

问题描述

我需要从此信息中将未出现的添加到数组中。如果有重复,这笔钱将被汇总然后存入一个。我怎样才能做到这一点?数据可能很多。

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

标签: arraysswiftgenericsstruct

解决方案


就这么简单。

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作为变量名。


推荐阅读