在字典数组中查找最大值

4

我需要在类似于[[String:Any]]的数组中找到最大值,请帮忙翻译。

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

"date":anotherDate
"value":13
.

我需要获取数组中的最大值(13),是否有一种简单的方法不使用传统循环来提取所有数字等?


你看过 Arraymax(by:) 方法了吗? - rmaddy
是的,但它只能在单个字典中找到最大值。我有一个字典数组,需要从所有字典的“values”键中找到最大值。 - Curnelious
1个回答

6
以下是使用 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

另一个选择是使用 mapmax

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

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接