我需要在[[String:Any]]
数组中找到 max :
"date":someDate
"value":8
.
.
"date":anotherDate
"value":13
.
我需要最大值(13),是否有一种简单的方法在数组上没有传统循环并提取所有数字等?
答案 0 :(得分:2)
这是使用$img_dir = "upload/";
$temp = explode(".", $_FILES["file"]["name"]);
$img = $img_dir .$_POST['job'].'_'.$_POST['name'].'_'.$_POST['age'].'.' .end($temp);
move_uploaded_file($_FILES['file']['tmp_name'], $img);
的一种可能的解决方案。
请注意,此示例使用了很多崩溃运算符(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
:
max
所有这些示例均假设数组不会为空,并且每个字典的let maxValue = data.map { $0["value"] as! Int }.max()!
键都有一个有效的Int
值。如果这些假设无效,请根据需要调整代码。