在swift中查找自定义对象数组中最接近的值



嗨,我在swift中确实有一组自定义对象,比如下面的

低于等级的对象

Class Person {
let name: String
let pointsEarned: CGFloat
}

阵列类似于下方


let person1 = Person(“name1”, “5.6”)
let person2 = Person(“name2”, “6.6”)
let person3 = Person(“name3”, “1.6”)
let persons = [person1, person2, person3 ]

我想找到一个赢得的积分接近7.0 的人

数组上有我可以为此写的扩展吗?

感谢您的帮助!谢谢

根据距离球门的距离(7(, computed asabs(球门得分(对对象进行排序`:

people.sort { abs(7 - $0.score) < abs(7 - $1.score) }

Alexander的答案很好,但您只需要min

public extension Sequence {
func min<Comparable: Swift.Comparable>(
by getComparable: (Element) throws -> Comparable
) rethrows -> Element? {
try self.min {
try getComparable($0) < getComparable($1)
}
}
}

我还认为abs作为一个全局函数看起来过时了。CCD_ 5是相同的值。

persons.min { ($0.pointsEarned - 7).magnitude }

如果需要,可以使用带有尾随闭包的参数标签:

persons.min(by:) { ($0.pointsEarned - 7).magnitude }

最新更新