繁体   English   中英

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

[英]Finding closest value in array of custom objects in swift

嗨,我在 swift 中有自定义对象数组,如下所示

class 以下对象

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 的人

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

感谢任何帮助。 谢谢。

亚历山大的回答很好,但你只需要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作为全局 function 看起来很陈旧。 magnitude是相同的值。

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

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

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

按对象与目标的距离 ( 7 ) 对对象进行排序, computed as abs(goal - score)`:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM