美文网首页IOS 知识积累
ios数组按时间拆分添加到另外一个数组

ios数组按时间拆分添加到另外一个数组

作者: 策马鞭程 | 来源:发表于2016-08-24 17:32 被阅读995次

数组通过time拆分新的数组(包含多个时间段的数组)

初始json数据如下:

{
  info_list : [
           { 
              id   :  110,
              time : "2016-6-20",
              name : "张三"
          },
         { 
              id   :  111,
              time : "2016-6-20",
              name : "李四"
          },
          { 
              id   :  112,
              time : "2016-6-21",
              name : "王五"
          },
           { 
              id   :  113,
              time : "2016-6-22",
              name : "赵六"
          }
  ]
}

改造后如下:

  {
  info_list : [
           [
              { 
               id   :  110,
               time : "2016-6-20",
               name : "张三"
              },
              { 
               id   :  111,
               time : "2016-6-20",
               name : "李四"
              }
            ],
            [
              { 
                id   :  112,
                time : "2016-6-21",
                name : "王五"
              }
            ],
            [
              { 
                id   :  113,
                time : "2016-6-22",
                name : "赵六"
              }
            ]
  ]
}

也就是数组中包含数组,多加了一层.

- (NSMutableArray *)arraySplitSubArrays:(NSArray *)array {
    // 数组去重,根据数组元素对象中time字段去重
    NSMutableDictionary *dic = [[NSMutableDictionary alloc] initWithCapacity:0];
    for(ShoppingDetailsRecordModel *obj in array)
    {
        [dic setValue:obj forKey:[Tool timeStampWithtimeStr:obj.time dateFormat:@"yyyy-MM-dd"]];
    }
    
    NSMutableArray *tempArr = [NSMutableArray array];
    for (NSString *dictKey in dic) {
        [tempArr addObject:dictKey];
    }
    
    NSArray *sortedArray = [tempArr sortedArrayUsingSelector:@selector(compare:)];
    
    NSLog(@"排序后:%@",sortedArray);
    
    // 字典重不会有重复值,allKeys返回的是无序的数组
    NSLog(@"去重后字典:%@",[dic allKeys]);
    
    NSMutableArray *temps = [NSMutableArray array];
    for (NSString *dictKey in sortedArray) {
        
        NSMutableArray *subTemps = [NSMutableArray array];
        for (ShoppingDetailsRecordModel *obj in array) {
            
            if ([dictKey isEqualToString:[Tool timeStampWithtimeStr:obj.time dateFormat:@"yyyy-MM-dd"]]) {
                [subTemps addObject:obj];
            }
            
        }
        
        [temps addObject:subTemps];
    }
    
    // 排序后,元素倒序的,逆向遍历
    NSEnumerator *enumerator = [temps reverseObjectEnumerator];
    temps = (NSMutableArray*)[enumerator allObjects];
    
    ZLLog(@"temps:%@",temps);
    return temps;
}

相关文章

  • ios数组按时间拆分添加到另外一个数组

    数组通过time拆分新的数组(包含多个时间段的数组) 初始json数据如下: 改造后如下: 也就是数组中包含数组,...

  • 数组拆分

    将一个数组按一定规则拆分成两个数组 奇数偶数拆分

  • 归并排序

    思路:将数组拆分,每次从中间拆分,直到不能拆分。然后将拆分到最后的数组,再慢慢的递归回来,按顺序一个个合并 算法实现

  • 2. js数组操作小结

    添加到数组末尾: 删除数组最后一项: 删除数组开头一项 数组克隆 添加到数组开头

  • 排序:归并排序

    原理 拆分:将一个数组拆分成两个数组,左数组和右数组。然后声明一个空的新数组。 合并:比较两个数组最前面的元素,把...

  • iOS 数组添加元素的正确姿势

    使用 addObjectsFromArray将数组添加到可变数组中是正确的方式 使用addObject将数组添加到...

  • 将数组拆分成固定长度数组

    #pragma mark -- 将数组拆分成固定长度 /** *将数组拆分成固定长度的子数组 * *@parama...

  • 无标题文章

    #pragma mark -- 将数组拆分成固定长度 /** *将数组拆分成固定长度的子数组 * *@parama...

  • javaScript之数组常规用法

    1.unshift:将参数添加到原数组开头,并返回数组的长度。 2.push:将参数添加到原数组末尾,并返回数组的...

  • iOS数组中相邻的一样的元素添加到一个新的数组

    iOS一串数组中,将相邻的一样的元素添加到一个新的数组: 例如: 数组arr=@[T1,T1,T3,T2,T5,T...

网友评论

  • 葱花饼:大神,能给讲解一下吗,最后遇到同样的问题了,多谢
    策马鞭程:@senlan 这个方法排序 sortedArrayUsingSelector:
    senlan:请问你这排序方法是怎么实现的
    策马鞭程:分析一下两组json数据,代码都贴在上面了:blush:

本文标题:ios数组按时间拆分添加到另外一个数组

本文链接:https://www.haomeiwen.com/subject/dedosttx.html