我在寻找一种有效的方法来过滤我的数据时遇到了麻烦。到目前为止我得到了什么:
像这样的结构:
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
的所有元素的新数组 最佳答案
正如@Hamish 在评论中已经提到的,您应该将结构属性设为非可选:
struct BasicData {
let n0, n1, n2: Double
}
要过滤数组,您可以使用范围模式运算符
~=
。如果您需要使您的范围从大于范围下限的第一个分数开始,您可以使用 Double 属性 .nextUp
如下:let filtered = basicData.filter {
5.nextUp..<50 ~= $0.n0 && 7.nextUp..<40 ~= $0.n2
}
关于arrays - 对数组应用范围过滤器,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42057842/