用于从自定义对象数组中提取数组的任何魔术命令



我有这样的类

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 }

最新更新