Data structures 在Swift中过滤多个值
我知道Swift中的过滤器和包含功能非常强大,它使我的许多作品变得简单。然而,我陷入了这样一种境地:我必须从模型数组中过滤/验证一组不同的值 让我们假设我有一个如下的模型Data structures 在Swift中过滤多个值,data-structures,filter,contains,swift5,higher-order-functions,Data Structures,Filter,Contains,Swift5,Higher Order Functions,我知道Swift中的过滤器和包含功能非常强大,它使我的许多作品变得简单。然而,我陷入了这样一种境地:我必须从模型数组中过滤/验证一组不同的值 让我们假设我有一个如下的模型 struct Person { var name: String var ID: String } 我有一系列的模型,如下所示: [ { sku = "123" attribute
struct Person {
var name: String
var ID: String
}
我有一系列的模型,如下所示:
[
{
sku = "123"
attributes = [
{
name:"Victor"
ID:"250"
},
{
name:"Shaw"
ID:"252"
}
]
},
{
sku = "123"
attributes = [
{
name:"John"
ID:"222"
},
{
name:"Nixon"
ID:"333"
}
]
}
]
现在我想通过属性中的多个ID来过滤sku。例如,如果我需要过滤ID为250和252的SKU,我需要这样的东西来实现它
personModelArray.forEach { person in
person.attributes.contains(where: { $0.ID == 250 && $0.ID == 252 })
}
OR
personModelArray.forEach { person in
person.attributes.filter { $0.ID == 250 && $0.ID == 252 }
}
我想要的是一个条件,比如验证属性数组是否同时具有这两个值。条件
$0.ID==250&&$0.ID==252
始终为false!一个存储器如何在同一时刻具有两个不同的值
看看这个简单的例子
struct Item {
let a: Int
let b: String
}
let arr = [Item(a: 0, b: "zero"),
Item(a: 1, b: "one"),
Item(a: 2, b: "two"),
Item(a: 4, b: "four")]
筛选所有项目,其中a==1或a==4
let arr0 = arr.filter { item in
item.a == 1 ||
item.a == 4
}
或者,如果您喜欢$parameter表示法
let arr1 = arr.filter { $0.a == 1 || $0.a == 4 }
最后,
let arr2 = arr.filter { item in
[1, 4].contains(item.a)
}
let arr3 = arr.filter { [1, 4].contains($0.a) }