gpt4 book ai didi

ios - 字典数组中每个对象的最大值

转载 作者:搜寻专家 更新时间:2023-10-30 20:14:06 25 4
gpt4 key购买 nike

我有一个字典数组,我正在尝试获取数组中每个玩家的最高分数。每个玩家都可以有多个条目我正在尝试获取每个玩家最佳成绩的字典数组。

NS数组[0] - NSDictionary

        - [0] Score: (double)20.7
- [1] NameID: (int) 1
- [2] Date

[1] - NSDictionary

        - [0] Score: (double)25
- [1] NameID: (int) 1
- [2] Date

[2] - NSDictionary

        - [0] Score: (double)28
- [1] NameID: (int) 2
- [2] Date

[3] - NSDictionary`

        - [0] Score: (double)26
- [1] NameID: (int) 3
- [2] Date

我尝试过使用 NSPredicate predicateWithFormat,但我只能取回数组中与名称无关的所有内容的最大值。

预期输出:

NS数组[1] - NSDictionary

        - [0] Score: (double)25
- [1] NameID: (int) 1
- [2] Date

[2] - NSDictionary

        - [0] Score: (double)28
- [1] NameID: (int) 2
- [2] Date

[3] - NSDictionary`

        - [0] Score: (double)26
- [1] NameID: (int) 3
- [2] Date

感谢您的帮助。

最佳答案

你不能为此使用 NSPredicate,因为你想确定几个不同玩家的最高分数。在幕后,NSPredicate 无论如何都会迭代数组,因此使用您自己的循环并不会降低效率。在下面的代码中,我假设分数和玩家姓名包含在 NSNumber

-(NSArray *)maxScoresForPlayers:(NSArray *)playerScores {

NSMutableDictionary *maxScores = [NSMutableDictionary new];

for (NSDictionary *player in playerScores) {
NSNumber *playerID = (NSNumber *)player[@"NameID"];
NSDictionary *playerMax = maxScores[playerID];
if (playerMax == nil) {
playerMax = player;
} else {
NSNumber *currentMax = (NSNumber *)[playerMax[@"Score"];
NSNumber *playerScore = (NSNumber *)player[@"Score"];
if ([playerScore doubleValue] > [currentMax doubleValue]) {
playerMax = player;
}
}
maxScores[playerID] = playerMax;
}

return([maxScores allValues];
}

关于ios - 字典数组中每个对象的最大值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40200253/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com