我在寻找一种有效的方法来过滤我的数据时遇到了麻烦。到目前为止我得到了什么:

像这样的结构:

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 < 50n2 > 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/

10-10 10:20