javascript - 从 JSON 对象中获取最大值
问题描述
我正在尝试从以下 JSON 对象中获取player
最高值。rating
我有两支球队home
,away
我想比较所有球员的所有评分并返回最高rating
值和球员的评分name
。
{
"lineup": {
"home": {
"starters": [{
"name": "Andreas",
"statistics": {
"rating": 6.38
}
},
{
"name": "Carlos",
"statistics": {
"rating": 6.87
}
}
]
},
"away": {
"starters": [{
"name": "Felix",
"statistics": {
"rating": 7.20
}
},
{
"name": "Daniel",
"statistics": {
"rating": 4.87
}
}
]
}
}
}
请记住,我的 JSON 包含 30 个players
而ratings
不是 4 个
到目前为止我所尝试的。
尝试#1:
我试图获取max
fromhome
和away
team 然后比较这两个值并获得最高值,由于某种原因它不会返回每个团队的最大值。Ex for teamhome
返回的player
是rating 6.38
另一个而不是另一个。
//Home
$max = max($decode_one['lineup']['home']['starters']);
$finalVal = $max['statistics']['rating'];
//Away
$max1 = max($decode_one['lineup']['away']['starters']);
$finalVal1 = $max1['statistics']['rating'];
尝试#2:
在这里,我将里面的评级添加到一个新数组中,然后使用循环从数组中获取最大值。我遇到的两个问题首先是 JSON 包括 30 个玩家,15 个来自home
和 15 个away
,出于某种原因,它只包含来自两者的 15 个玩家,home
而不是来自两者。我认为这是因为每个团队的密钥都是相同的(0-14),而另一个问题我也希望返回name
selected player
。
$result = array();
foreach ($decode_one['lineup'] as $homeOrAway) {
foreach ($homeOrAway as $startersOrSubs) {
foreach ($startersOrSubs as $key => $value) {
$result[$key['rating']][] = $value['statistics']['rating'];
}
}
}
foreach ($result as $key => $maxValue) {
echo "{$key}: " . max($maxValue) . "\n";
}
有任何想法吗?
谢谢
解决方案
PHP 版本,array_reduce
用于查找来自“home”和“away”的玩家组合数组中的最大元素:
$max = array_reduce(
array_merge(
$decode_one['lineup']['home']['starters'],
$decode_one['lineup']['away']['starters']
),
function($carry, $item) {
if( $carry === NULL) {
return $item;
}
else {
return $carry['statistics']['rating'] > $item['statistics']['rating'] ?
$carry : $item;
}
}
);
推荐阅读
- html - 将网格空div显示为间隔?
- python - OSError:无法打开文件(未找到文件签名)h5 文件
- android - 日历应用程序是否需要使用日历提供程序?
- ruby-on-rails - Rails 数据库查询 .order GREATEST 忽略 NULL 或空
- android - 如何使 Firebase 数据库值仅对其各自配对的 UID 可见?
- c# - C# UDP Socket.ReceiveFrom() 无异常中断循环
- can-bus - 如何通过 CAPL 脚本自动化 UDS 命令
- asp.net-mvc-5 - 我认为保存到数据库时在 asp.net mvc5 应用程序中出现错误。唯一的消息是错误。处理您的请求时发生错误
- python-3.x - 如何将标题转换为新列
- android - 我似乎无法使导航抽屉工作:如何解决这个问题?