【问题标题】:Swift filter array by condition按条件快速过滤数组
【发布时间】:2020-08-11 23:45:22
【问题描述】:

我的猫模型有这个:

var id: Int?

如果我有一组猫,如何获取所有 id 为 7 的猫?我假设我应该使用过滤器方法:

let filteredCats = cats.filter(???)

【问题讨论】:

标签: arrays swift filter


【解决方案1】:

除非您没有其他要求,否则应该很简单。

cats.filter { $0.id == 7 }

要跳过可选值,您可以使用compactMap

例如

let array: [Cat] = [
    Cat(id: 7,   name: "CatA"),
    Cat(id: nil, name: "CatB"),
    Cat(id: 1,   name: "CatC"),
    Cat(id: 7,   name: "CatD"),
    Cat(id: 7,   name: "CatE"),
    Cat(id: 2,   name: "CatF"),
    Cat(id: nil, name: "CatG"),
]

print(array.compactMap { value -> Cat? in
    guard let id = value.id, id > 2 else { return nil }
    return value
})

【讨论】:

    猜你喜欢
    • 2017-12-30
    • 2015-10-27
    • 2014-09-11
    • 1970-01-01
    • 2022-12-18
    • 1970-01-01
    • 1970-01-01
    • 2021-10-20
    相关资源
    最近更新 更多