swift – 使用数组作为值过滤字典

我有字典[String:[Object]].每个对象都有.name

是否可以在字典上使用.filter返回只包含过滤值的字典?

如果我理解你的问题,你需要[String:[Object]]字典的键,其中每个Object都有一个name属性,并且该属性具有给定值.
struct Obj {
    let name: String
}

let o1 = Obj(name: "one")
let o2 = Obj(name: "two")
let o3 = Obj(name: "three")

let dict = ["a": [o1,o2],"b": [o3]]

现在假设您想要一个对象具有“两个”名称的字典键:

过滤解决方案

let filteredKeys = dict.filter { (key,value) in value.contains({ $0.name == "two" }) }.map { $0.0 }

print(filteredKeys)

使用flatMap和包含的解决方案

let filteredKeys = dict.flatMap { (str,arr) -> String? in
    if arr.contains({ $0.name == "two" }) {
        return str
    }
    return nil
}

print(filteredKeys)

带循环的解决方案

var filteredKeys = [String]()

for (key,value) in dict {
    if value.contains({ $0.name == "two" }) {
        filteredKeys.append(key)
    }
}

print(filteredKeys)

相关文章

软件简介:蓝湖辅助工具,减少移动端开发中控件属性的复制和粘...
现实生活中,我们听到的声音都是时间连续的,我们称为这种信...
前言最近在B站上看到一个漂亮的仙女姐姐跳舞视频,循环看了亿...
【Android App】实战项目之仿抖音的短视频分享App(附源码和...
前言这一篇博客应该是我花时间最多的一次了,从2022年1月底至...
因为我既对接过session、cookie,也对接过JWT,今年因为工作...