【发布时间】:2020-12-14 20:51:14
【问题描述】:
我正在尝试减少此 CustomDataModel 数组中每个相似“x”值的“y”值分量,并返回一个 CustomDataModel 数组(或只是一个元组数组 [(Double, Double)]。
我对 Swift 的了解充其量只是初级知识,并且尝试使用如下链接函数会减少整个数组而不是每个“x”值。我不确定如何将 reduce 函数限制为仅类似的值。
let reducedArray = yValues.filter( {$0.x == $0.x}).map({$0.y}).reduce(0, +)
上述函数减少了所有 y 值,而不是每个 x。 下面是一个模型和一些虚拟数据:
struct CustomDataModel {
var x : Double
var y : Double
}
let yValues: [CustomDataModel] = [
CustomDataModel(x: 0.0, y: 10.0),
CustomDataModel(x: 1.0, y: 5.0),
CustomDataModel(x: 1.0, y: 12.5),
CustomDataModel(x: 1.0, y: 14.5),
CustomDataModel(x: 1.0, y: 18.45),
CustomDataModel(x: 5.0, y: 11.4),
CustomDataModel(x: 5.0, y: 9.4),
CustomDataModel(x: 5.0, y: 18.4),
CustomDataModel(x: 5.0, y: 5.0),
CustomDataModel(x: 9.0, y: 7.6),
CustomDataModel(x: 9.0, y: 13.5),
CustomDataModel(x: 9.0, y: 18.5),
CustomDataModel(x: 9.0, y: 17.6),
CustomDataModel(x: 9.0, y: 14.3),
CustomDataModel(x: 14.0, y: 19.6),
CustomDataModel(x: 14.0, y: 17.8),
CustomDataModel(x: 14.0, y: 20.1),
CustomDataModel(x: 14.0, y: 21.5),
CustomDataModel(x: 14.0, y: 23.4),
]
理想情况下,我的输出应该是这样的:
print(reducedArray)
//[(0.0, 10.0), (1.0, 50.45), (5.0, 44.2), (9.0, 71.5), (14.0, 102.4)]
【问题讨论】:
标签: swift dictionary filter tuples reduce