如何使用不同的数组过滤字典

How to filter a dictionary using a different array

我在 Swift 中有一个数组(项目)和一个字典数组(数据):

let items = ["test", "2test"]


var data = [Model(title: "Title", number: 1, weight: 10, text: "text1", url: "http://google.com", questRepeat: false, code: "test"), 
           Model(title: "Title1", number: 1, weight: 10, text: "text2", url: "http://google.com", questRepeat: false, code: "1test"), 
           Model(title: "Title2", number: 1, weight: 10, text: "text3", url: "http://google.com", questRepeat: false, code: "2test")]

我想创建一个数组,其中包含那些“代码”不等于 'items' 数组中提供的数字的字典数组。也就是我想最终得到一个数组:

var result = [
    Model(title: "Title1", number: 1, weight: 10, text: "text2", url: "http://google.com", questRepeat: false, code: "1test")
]

对于这项任务,它们似乎异常复杂。

是否有使用谓词或其他方法的巧妙方法?

id 我认为你的意思是 Model 中的 code 属性 因为这是唯一似乎与你的 [=15] 中的数据匹配的数据=]数组。

你可以用 data 数组

上的 filter 做这样的事情
let items = ["test", "2test"]


var data = [Model(title: "Title", number: 1, weight: 10, text: "text1", url: "http://google.com", questRepeat: false, code: "test"),
            Model(title: "Title1", number: 1, weight: 10, text: "text2", url: "http://google.com", questRepeat: false, code: "1test"),
            Model(title: "Title2", number: 1, weight: 10, text: "text3", url: "http://google.com", questRepeat: false, code: "2test")]

let result = data.filter { !items.contains([=10=].code) }
print(result)

这应该给你:

[Model(title: "Title1", number: 1, weight: 10, text: "text2", url: "http://google.com", questRepeat: false, code: "1test")]