arrays - 如何在 Swift 中从字符串数组中过滤对象

标签 arrays swift

我有一个 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/

相关文章:

java - 使用Java删除数组中中间元素的上一个和下一个元素并缩小数组

swift - 无法使用类型为 'encode' 的参数列表调用 'NSAttributedString'

swift - 二元运算符 '==' 不能应用于类型 'Int8' 和 'Int' 的操作数

arrays - 字典中数组中的 Swift 字典

c++ - 在 c++/c 中用变量定义数组的长度

java - 如何对通用数组进行排序?

python - 如何取消除 argmax 之外的所有条目?

java - 从数组中删除特定值(java)

swift - 使用 Swift (macOS) 从图像制作 GIF

ios - dequeueReusableCell 导致新单元格使用旧样式?