我有一组心率。我想要的只是获得最后 5 分钟心率的平均值。 (数组包含超过过去一小时的心率)。
class HeartRate
{
var hr = 0
var date : Date?
}
var arrHeartRate = [HeartRate]()
let minDate = Date().addingTimeInterval(-300) //get 5min before time
var avgHR = self.arrHeartRate.filter { (Item) -> Bool in
return Item.date! > minDate
}.reduce(0) { (res, item) -> Result<Any, <#Error: Error#>> in
return res
}
最佳答案
这是给你的一些代码,它是不同 stackoverflow 答案的集合。
class HeartRate
{
var hr = 0
var date: Date?
}
extension Collection where Iterator.Element == HeartRate, Index == Int {
/// Returns the average of all elements in the array
var average: Double {
return isEmpty ? 0 : Double(reduce(0) { $0 + $1.hr }) / Double(endIndex-startIndex)
}
}
var arrHeartRate = [HeartRate(), HeartRate()]
let minDate = Date().addingTimeInterval(-300) //get 5min before time
let rateInLast5Min = arrHeartRate.filter {
guard let date = $0.date else { return false }
return date > minDate
}
var avgHR = rateInLast5Min.average
关于arrays - 快速减少功能问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45080688/