使用数组索引对数组进行排序
Posted
技术标签:
【中文标题】使用数组索引对数组进行排序【英文标题】:Sort an array using array index 【发布时间】:2012-12-07 05:48:23 【问题描述】:我被困在这里...... 我有两个数组 Arr_title 和 Arr_distance 我使用这种方法对 Arr_distance 进行了排序
NSSortDescriptor *sortDescriptor = [[[NSSortDescriptor alloc] initWithKey:@"self" ascending:YES]autorelease];
sortedFloats = [appDel.Arr_distance sortedArrayUsingDescriptors:
[NSArray arrayWithObject:sortDescriptor]];
但问题是我想根据 sortedFloats 数组的索引对 Arr_title 进行排序...
谢谢提前帮助我.......
【问题讨论】:
sortedFloats arry 是什么意思 【参考方案1】:试试这个,
NSDictionary *dict = [NSDictionary dictionaryWithObjects:Arr_title forKeys:Arr_distance];
NSSortDescriptor *sortDescriptor = [[[NSSortDescriptor alloc] initWithKey:@"self" ascending:YES] autorelease];
sortedFloats = [appDel.Arr_distance sortedArrayUsingDescriptors:
[NSArray arrayWithObject:sortDescriptor]];
NSMutableArray *sortedTitles = [NSMutableArray array];
for (NSString *key in sortedFloats) //or just use sortedTitles = [dict objectsForKeys:sortedFloats notFoundMarker:[NSNull null]];
[sortedTitles addObject:[dict valueForKey:key]];
NSLog(@"%@",sortedValues);
sortedTitles
应该为您提供按与sortedFloats
相同的顺序排序的数组。
【讨论】:
【参考方案2】:嘿,不要使用两个不同的数组,而是使用 1 个字典,key title,distance
将该字典保存在数组中,然后对该数组进行排序 所以你已经组合在一起了,所以由于映射没有任何问题任何排序(按标题和距离)。
【讨论】:
【参考方案3】:如果我理解你的问题,你可以使用 NSDictionary 来完成同样的任务
NSMutableArray *array = [NSMutableArray arrayWithArray:@[ @@"title" : @"City1",@"dist" : @5,
@ @"title" : @"City2",@"dist" : @2.3 ,
@@"title" : @"City3",@"dist" : @11.0 ,
@@"title" : @"City4",@"dist" : @1.0,
@@"title" : @"City5",@"dist" : @.5,
@@"title" : @"City6",@"dist" : @13 ]];
NSLog(@"dict<%@>",array);
NSSortDescriptor *sort = [[NSSortDescriptor alloc] initWithKey:@"dist" ascending:YES];
NSArray *sortarray = [array sortedArrayUsingDescriptors:[NSArray arrayWithObject:sort]];
NSLog(@"sort array = <%@>",sortarray);
【讨论】:
【参考方案4】:我得到了解决方案,看下面的代码............
NSSortDescriptor *sortDescriptor = [[[NSSortDescriptor alloc] initWithKey:@"self" ascending:YES]autorelease];
sortedFloats = [appDel.Arr_distance sortedArrayUsingDescriptors:
[NSArray arrayWithObject:sortDescriptor]];
NSLog(@" Sorted Array : %@", sortedFloats);
NSDictionary *dictTitle = [NSDictionary dictionaryWithObjects:Arr_title forKeys:appDel.Arr_distance];
// Sort the second array based on the sorted first array
sortedTitle = [dictTitle objectsForKeys:sortedFloats notFoundMarker:[NSNull null]];
NSLog(@" Sorted Title : %@",sortedTitle);
// Put the two arrays into a dictionary as keys and values
NSDictionary *dictAddress = [NSDictionary dictionaryWithObjects:Arr_address forKeys:appDel.Arr_distance];
// Sort the second array based on the sorted first array
sortedAddress = [dictAddress objectsForKeys:sortedFloats notFoundMarker:[NSNull null]];
NSLog(@" Sorted Address : %@",sortedAddress);
如果在其他方法中使用,不要忘记保留您的数组 ....
【讨论】:
以上是关于使用数组索引对数组进行排序的主要内容,如果未能解决你的问题,请参考以下文章