昨天女朋友对后台返回的数据有一个要求,后台返回了一个字典数组,字典里面有一个Key为apId。需要把具有相同apId的字典放在一个新创建的数组中。返回数据如下图
也就是说对数据进行重组,在下班前的一个小时帮女朋友解决了这个问题。感觉还是不错的~ 再此就抛砖引玉了
//initialization
//初始化测试数组
NSArray *originalArray = @[@1, @23, @2, @1, @1, @23, @33, @2, @3321, @5, @1];
NSInteger count = originalArray.count;
NSMutableArray *mutableOriginalArray = [originalArray mutableCopy]; //深拷贝
//这个数组装所有包含相同元素的数组
NSMutableArray *allArray = [NSMutableArray array];
//for循环遍历数组
for (NSInteger i = 0; i < count; i++) {
// NSMutableArray *tempArray = [mutableOriginalArray mutableCopy]; //遍历一个数组的时候 无法对该数组进行修改 所以需要一个临时数组
//装相同元素的数组
NSMutableArray *array = [NSMutableArray array];
for (NSNumber *num in mutableOriginalArray) {
if ([originalArray[i] isEqual:num]) { //判断是否相同 因为第一个num等于originalArray[i] 所以只需添加num就可以
[array addObject:num]; //array数组里面包含所有相同元素的数组
}
} //end ForIn
if (array.count != 0) { //如果数组为空无需添加
[allArray addObject:array]; //这句话要放在外面
}
[mutableOriginalArray removeObject:originalArray[i]]; // 这句话很重要 如果originalArray[i] 为@1 则数组会移除所有@1的元素
//优化遍历时间 如果数组已经为空 则跳出循环 直接输出数组
if (mutableOriginalArray.count == 0) {
break;
}
}//end For
NSLog(@"数组%@", allArray);
天天在请求数据,搭UI的空闲之余,写写这种代码感觉还是很不错的.再此也希望大家的指点,一起进步..