ios - Swift 4 - 获取字典中最长的数组
问题描述
我有一个这样的字典:
var tableData = Dictionary<String, Array<Dictionary<String, Any>>>()
我的 tableData 字典中可能有 71 或 72 个值。目前我只是抓住第一个来计算这些值:
var counter = (Array(tableData.values)[0] as Array<Dictionary<String, Any>>).count
我的问题是,我如何获得价值最高的项目?所以我的计数器一直是 72 而不是 71?
这有意义吗?
解决方案
有时候,做一些长期的事情是值得的……
var tableData = Dictionary<String, Array<Dictionary<String, Any>>>()
tableData["Test2"] = [["A": "", "B": "", "C": ""]]
tableData["Test"] = [["A": "", "B": ""], ["A": "", "B": "", "C": "", "D": ""]]
let result = tableData.values.max { (lhs, rhs) -> Bool in
let lhsValue = lhs.max(by: { (lhs, rhs) -> Bool in
return lhs.count < rhs.count
})
let rhsValue = rhs.max(by: { (lhs, rhs) -> Bool in
return lhs.count < rhs.count
})
return lhsValue?.count ?? 0 < rhsValue?.count ?? 0
}
result
let longest = result?.max(by: { (lhs, rhs) -> Bool in
return lhs.count < rhs.count
})
longest?.count
这将输出类似...
result = [["A": "", "B": ""], ["B": "", "A": "", "C": "", "D": ""]]
longest?.count = 4
如果这没有达到您想要的效果,请考虑采用这个想法并将其运行到并查看它会将您带到哪里;)
推荐阅读
- firebase - 在 Firestore 中自动更新颤振查询结果
- typescript - 如何识别导入模块的类型定义?
- android - 如何从片段调用方法到类?
- android - 为什么Androids SpeechRecognizer会自动停止
- java - Junit 不读取静态字段
- python - 循环内的Python异步函数调用
- node.js - MongoError:操作被中断
- node.js - 使用 nodejs express 作为主应用程序并在子文件夹/子域中做出反应
- coldfusion - 使用 cffile action="uploadall" 上传时如何限制文件大小?
- javascript - 测试构成 OR 条件一部分的未覆盖分支