我有一个 allMenuItems 数组,如下所示,我正试图从一个 Id 数组中过滤它。这在 Swift 中是如何实现的?我对高阶函数有一些了解,但到目前为止我一直无法成功过滤它。欢迎任何关于如何实现这一目标的指示,谢谢。
struct MenuItems {
var id: String
var name: String
init() {
self.id = ""
self.name = ""
}
}
var m1 = MenuItems()
m1.id = "1"
m1.name = "Name 1"
var m2 = MenuItems()
m2.id = "2"
m2.name = "Name 2"
var m3 = MenuItems()
m3.id = "3"
m3.name = "Name 3"
var allMenuItems: [MenuItems] = [m1, m2, m3] // [{id "1", name "Name 1"}, {id "2", name "Name 2"}, {id "3", name "Name 3"}]
var anArrayOfIds: [String] = ["1", "3"]
过滤后的输出将是:
var filteredMenuItems: [MenuItems] = [m1, m3] // [{id "1", name "Name 1"}, {id "3", name "Name 3"}]
有什么建议吗?
最佳答案
怎么样
let filteredMenuItems = allMenuItems.filter { anArrayOfIds.contains($0.id)}
这给了我带有 1 和 3 的项目。
我冒昧地稍微更新了你的代码:
struct MenuItems {
let id: String
let name: String
}
let m1 = MenuItems(id: "1", name: "Name 1")
let m2 = MenuItems(id: "2", name: "Name 2")
let m3 = MenuItems(id: "3", name: "Name 3")
let allMenuItems = [m1, m2, m3]
let anArrayOfIds: [String] = ["1", "3"]
let filteredMenuItems = allMenuItems.filter { anArrayOfIds.contains($0.id)}
希望对你有帮助
关于arrays - 如何在 Swift 中从字符串数组中过滤对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53641080/