如何使用不同的数组过滤字典
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")]
我在 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")]