swift - 在字典数组中找到最大值
问题描述
我需要在数组中找到最大值,如下所示:[[String:Any]]
"date":someDate
"value":8
.
.
"date":anotherDate
"value":13
.
我需要最大值( 13),有没有一种简单的方法没有传统的数组循环和提取所有数字等?
解决方案
这是一种可能的解决方案,使用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
另一种选择是使用map
and max
:
let maxValue = data.map { $0["value"] as! Int }.max()!
所有这些示例都假定数组不会为空,并且每个字典都有一个有效Int
的"value"
键值。如果这些假设无效,请根据需要调整代码。
推荐阅读
- r - 循环 - 从模拟数据中提取 LASSO 系数
- selenium - 一遍又一遍地抓取一些动态数据(像刮刀这样的浏览器!!)
- ruby-on-rails - 如何使用 Rspec 测试对象属性
- python - Python/Flask - ANSI 代码现在出现在控制台中
- android - 将文件写入 Android Q 中可公开访问的文档文件夹 - Scoped Storage
- javascript - 石头剪刀布的逻辑在 ReactJS 中不起作用
- shapes - 如何用图像填充 P5.js 形状
- r - 根据设定值组合和创建新列
- python - 如何解决 OSError [Errno 22] 无效参数
- java - 有没有办法简化该源代码?