iOS数据重组

昨天女朋友对后台返回的数据有一个要求,后台返回了一个字典数组,字典里面有一个Key为apId。需要把具有相同apId的字典放在一个新创建的数组中。返回数据如下图


iOS数据重组_第1张图片
返回数据

也就是说对数据进行重组,在下班前的一个小时帮女朋友解决了这个问题。感觉还是不错的~ 再此就抛砖引玉了

        //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);
iOS数据重组_第2张图片
输出结果

天天在请求数据,搭UI的空闲之余,写写这种代码感觉还是很不错的.再此也希望大家的指点,一起进步..

你可能感兴趣的:(iOS数据重组)