我在找到一种有效的方法来过滤我的数据时遇到了麻烦。到目前为止我得到了什么:
这样的结构:
struct BasicData {
let n0 : Double!
let n1 : Double!
let n2 : Double!
}
var basicData = [BasicData]()
使用以下方法追加数组后
basicData.append(BasicData(n0: 55.15, n1: 5.1, n2: 2))
basicData.append(BasicData(n0: 2, n1: 2.1, n2: 25))
basicData.append(BasicData(n0: 45.15, n1: 5.1, n2: 15))
我想创建一个新数组,其中包含n0 > 5 && n0 < 50
和n2 > 7 && n2 < 40
答案 0 :(得分:2)
let filteredData = basicData.filter({$0.n0 > 5 && $0.n0 < 50 && $0.n2 > 7 && $0.n2 < 40})
答案 1 :(得分:2)
正如@Hamish在评论中已经提到的那样,你应该使你的结构属性成为非选项:
struct BasicData {
let n0: Double
let n1: Double
let n2: Double
}
要过滤数组,可以使用范围模式运算符~=
。如果您需要让您的范围从第一个分数开始大于范围的下限,您可以使用Double属性.nextUp
,如下所示:
let filtered = basicData.filter {5.nextUp..<50 ~= $0.n0 && 7.nextUp..<40 ~= $0.n2 }