上次有朋友開發(fā)我的時候遇到需要將多個數(shù)組里面的字符串逐個進行排列組合,例如:數(shù)組1:@[@"1",@"2",@"3",@"4"],數(shù)組2:@[@"5",@"6",@"7",@"8"],數(shù)組3:@[@"9",@"10",@"11",@"12"],數(shù)組4:@[@"13",@"14",@"15",@"16"],
需要排列成(1,5,9,13),(1,5,9,14)......等組合,下面貼下代碼參考下:
NSMutableArray *array1 = [NSMutableArray arrayWithArray: @[@"1",@"2",@"3",@"4"]];
NSMutableArray *array2 = [NSMutableArray arrayWithArray:@[@"5",@"6",@"7",@"8"]];
NSMutableArray *array3 = [NSMutableArray arrayWithArray:@[@"9",@"10",@"11",@"12"]];
NSMutableArray *array4 = [NSMutableArray arrayWithArray:@[@"13",@"14",@"15",@"16"]];
//放在一個數(shù)組中便于循環(huán)添加數(shù)組
NSMutableArray*array = [NSMutableArrayarrayWithObjects:array1,array2,array3,array4,nil];
NSArray*list = [selfmergeArray:array];
NSLog(@"%@",list);
- (NSMutableArray *)mergeArray:(NSMutableArray *)array {
? ? if(array.count>1) {
? ? ? ? NSMutableArray*resultArray = [NSMutableArrayarray];
? ? ? ? NSMutableArray*firstArray = array[0];
? ? ? ? NSMutableArray*secondArray = array[1];
? ? ? ? for(inti =0; i < firstArray.count;i++) {
? ? ? ? ? ? if(![firstArray[i]isKindOfClass:[NSMutableArrayclass]]) {
? ? ? ? ? ? ? ? firstArray[i] = [NSMutableArrayarrayWithObjects:firstArray[i],nil];
? ? ? ? ? ? }
? ? ? ? ? ? for(intj =0; j < secondArray.count; j++) {
? ? ? ? ? ? ? ? if(j ==0) {
? ? ? ? ? ? ? ? ? ? [firstArray[i]addObject:secondArray[j]];
? ? ? ? ? ? ? ? }else{
? ? ? ? ? ? ? ? ? ? [firstArray[i]replaceObjectAtIndex:((NSArray*)firstArray[i]).count-1withObject:secondArray[j]];
? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? NSArray*temArray = [firstArray[i]mutableCopy];
? ? ? ? ? ? ? ? [resultArrayaddObject:temArray];
? ? ? ? ? ? }
? ? ? ? }
? ? ? ? [arrayreplaceObjectAtIndex:0withObject:resultArray];
? ? ? ? [arrayremoveObjectAtIndex:1];
? ? ? ? [selfmergeArray:array];
? ? }
? ? returnarray;
}