首页 > 解决方案 > 在字典数组中找到最大值

问题描述

我需要在数组中找到最大值,如下所示:[[String:Any]]

"date":someDate
"value":8
.
.

"date":anotherDate
"value":13
.

我需要最大值 13),有没有一种简单的方法没有传统的数组循环和提取所有数字等?

标签: swiftdictionary

解决方案


这是一种可能的解决方案,使用Array max(by:).

请注意,此示例使用了很多崩溃运算符 ( !)。根据实际代码的需要安全地解包:

let data: [[String: Any]] = [
    ["date":Date(), "value":8],
    ["date":Data(), "value":13],
]

let maxEntry = data.max { ($0["value"] as! Int) < ($1["value"] as! Int) }!
let maxValue = maxEntry["value"] as! Int

另一种选择是使用mapand max

let maxValue = data.map { $0["value"] as! Int }.max()!

所有这些示例都假定数组不会为空,并且每个字典都有一个有效Int"value"键值。如果这些假设无效,请根据需要调整代码。


推荐阅读