首页 > 解决方案 > 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?

这有意义吗?

标签: iosswift

解决方案


有时候,做一些长期的事情是值得的……

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

如果这没有达到您想要的效果,请考虑采用这个想法并将其运行到并查看它会将您带到哪里;)


推荐阅读