sons comme une sorte de devoirs :)
Vous avez donc ceci:
NSMutableDictionary* source = [@{
@"1" : @[ @10, @20, @100 … ],
@"2" : @[ @8, @42, @17 … ]
} mutableCopy];
permet donc commencer par créer un autre arrangement:
NSMutableArray* numbers = [NSMutableArray new];
for (NSArray* array in source.allValues)
{
for (NSNumber* number in array)
{
[numbers addObject: @{ @"number" : number, @"parent" : array }];
}
}
Voici ce que nous obtenons:
@[
@{ @"number" : @10, @"parent" : <array> },
@{ @"number" : @20, @"parent" : <array> },
…
]
Maintenant, nous pouvons trier et trouver les numéros que vous vouliez.
[numbers sortUsingComparator: ^(id lhs, id rhs){
return [((NSDictionary*) rhs)[@"number"] compare: ((NSDictionary*) lhs)[@"number"]];
}];
NSArray* topNumbers = [numbers subarrayWithRange: NSMakeRange(0, 10)];
Nous y sommes. topNumbers contient les numéros dont vous avez besoin le long du tableau source.
C'est une façon assez naïve de le faire. Il peut être optimisé tant dans le temps CPU que dans l'utilisation de la mémoire. Mais bon, reste simple n'est pas une mauvaise chose. Non adressé: et si les nombres dixième et onzième sont égaux? (adressé ici: Pick Out Specific Number from Array?) contrôles de portée. pas testé, pas même compilé. ;)
Je comprends que cela semble évident et relativement simple, cependant, je peux les trier car je dois conserver (ou au moins être en mesure de faire référence) les 10 meilleurs index originaux des nombres. –
lorsque vous obtenez le top 10 des éléments, vous pouvez créer un nouveau tableau qui contient les index des éléments d'origine dans le tableau original –
Ce qui me trouble, c'est comment quand vous trier les nombres pouvez-vous obtenir l'index des premiers chiffres avant ils ont été mélangés? –