我有这样的类
class ValueTimestamp {
let value: Double
let timestamp : Double
init(value:Double, timestamp:Double) {
self.value = valuer
self.timestamp = timestamp
}
}
然后我有一个填充ValueTimestamp
对象的数组。让我们称之为,myArray
.
现在我想操作数组,例如提取值大于 10 的元素。
因为我是 swift 的新手,所以我会这样做:
// this will create an array with Doubles
let sub = myArray.map($0.value > 10)
var newArray : [ValueTimestamp] = []
for i in 0..< myArray.count {
let newValue = ValueTimestamp.init(value:sub[i], timestamp:myArray[i])
newArray.append(newValue)
}
现在我有newArray
包含值大于 10 的myArray
元素。
有没有使用.map
、.flatmap
或任何可以做到这一点的魔法命令?
你要找的是filter
方法:
public func filter(_ isIncluded: (Element) throws -> Bool) rethrows -> [Element]
它采用参数闭包,它接受 1 个元素并返回true
是否应该在结果数组中添加元素或false
是否应该过滤掉元素。
您的代码:
let biggerThem10 = myArray.filter { $0.value > 10 }