Mam dwie tablice. Powiedzmy:Sortowanie jednej tablicy w tej samej kolejności co inna tablica
array = "Dave", "Mike", "Joe", "Jason", "Kevin"
i
IQ = 110, 145, 75, 122, 130
chcę sortować je według IQ. Powiedz Najwyższy do najniższego. Mogę sortować jedną tablicę ... a następnie wracam i sprawdzam, w jakiej pozycji się znajduje, a następnie przestawiam drugą tablicę. Wygląda na to, że musi istnieć lepszy sposób na zrobienie tego. Zwłaszcza jeśli tablica staje się większa.
Oto, jak to teraz robię.
d1, d2, d3, d4, d5
to moja zmienna IQ
. Używam tablicy sortBack
, aby zmienić kolejną tablicę w tej samej kolejności.
NSMutableArray *myArray = [NSMutableArray arrayWithObjects:[NSString stringWithFormat:@"%d",d1], [NSString stringWithFormat:@"%d",d2],[NSString stringWithFormat:@"%d",d3], [NSString stringWithFormat:@"%d",d4],[NSString stringWithFormat:@"%d",d5], nil];
//sorting
[myArray sortUsingComparator:^NSComparisonResult(NSString *str1, NSString *str2) {
return [str1 compare:str2 options:(NSNumericSearch)];
}];
for(int i=0;i<5;i++)
{
if([[myArray objectAtIndex:i] integerValue]==d1)
{
sortBackArray[i]=1;
}
else if([[myArray objectAtIndex:i] integerValue]==d2)
{
sortBackArray[i]=2;
}
else if([[myArray objectAtIndex:i] integerValue]==d3)
{
sortBackArray[i]=3;
}
else if([[myArray objectAtIndex:i] integerValue]==d4)
{
sortBackArray[i]=4;
}
else if([[myArray objectAtIndex:i] integerValue]==d5)
{
sortBackArray[i]=5;
}
}
Dlaczego utrzymujesz do tego dwie tablice. Lepiej mieć zestaw słowników o nazwach i wartościach IQ. Następnie możesz utworzyć sortDeskryptor z kluczem IQ i posortować tablicę. Gdy masz powiązane informacje, zawsze trzymaj je razem. – Anupdas
Tak, myślałem, że to może być droga, ale często mylę się ze słownikiem. Przyjrzę się temu jeszcze raz. –
Byłoby bardzo trudno, jeśli nie korzystasz ze słowników lub niestandardowych obiektów modelu, aby zachować strukturę danych. Wysłałem przykład. Spójrz. – Anupdas