iOS---iOS之陣列的排序(升序、降序及亂序)
阿新 • • 發佈:2018-11-30
NSMutableArray *priceArray = [NSMutableArray arrayWithObjects:@"0.2",@"5",@"44",@"67",@"98.5",@"1.55", nil]; [priceArray sortUsingComparator:^NSComparisonResult(id _Nonnull obj1, id _Nonnull obj2) { if ([obj1 integerValue] < [obj2 integerValue]){ return NSOrderedAscending; }else{ return NSOrderedDescending; } }]; 這裡再次得到的priceArray即為升序排列的陣列; 若果想要得到降序的調換一下return的位置即可。
NSArray *array = @[@"d",@"a",@"c",@"z",@"e"]; NSArray *resultArray = [array sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2) { NSString *str1 = obj1; NSString *str2 = obj2; NSComparisonResult result = [str1 compare:str2]; // return result == NSOrderedDescending; // 升序 return result == NSOrderedAscending; // 降序 }];
#pragma mark -- 陣列排序方法(升序) - (void)arraySortASC{ //陣列排序 //定義一個數字陣列 NSArray *array = @[@(3),@(4),@(2),@(1)]; //對陣列進行排序 NSArray *result = [array sortedArrayUsingComparator:^NSComparisonResult(id _Nonnull obj1, id _Nonnull obj2) { NSLog(@"%@~%@",obj1,obj2); //3~4 2~1 3~1 3~2 return [obj1 compare:obj2]; //升序 }]; NSLog(@"result=%@",result); } #pragma mark -- 陣列排序方法(降序) - (void)arraySortDESC{ //陣列排序 //定義一個數字陣列 NSArray *array = @[@(3),@(4),@(2),@(1)]; //對陣列進行排序 NSArray *result = [array sortedArrayUsingComparator:^NSComparisonResult(id _Nonnull obj1, id _Nonnull obj2) { NSLog(@"%@~%@",obj1,obj2); //3~4 2~1 3~1 3~2 return [obj2 compare:obj1]; //降序 }]; NSLog(@"result=%@",result); } #pragma mark -- 陣列排序方法(亂序) - (void)arraySortBreak{ //陣列排序 //定義一個數字陣列 NSArray *array = @[@(3),@(4),@(2),@(1),@(5),@(6),@(0)]; //對陣列進行排序 NSArray *result = [array sortedArrayUsingComparator:^NSComparisonResult(id _Nonnull obj1, id _Nonnull obj2) { NSLog(@"%@~%@",obj1,obj2); //亂序 if (arc4random_uniform(2) == 0) { return [obj2 compare:obj1]; //降序 } else{ return [obj1 compare:obj2]; //升序 } }]; NSLog(@"result=%@",result); }