美文网首页为了更好的活着
iOS 数组相同对象进行分组,存储到新的数组

iOS 数组相同对象进行分组,存储到新的数组

作者: 东岳哥哥 | 来源:发表于2018-08-13 10:50 被阅读0次

时间:2018年8月13日 周一

数组相同对象进行分组,存储到新的数组
直接上实现代码
在设计上增强了方法的扩展性,可以对字符串、非字符串对象进行筛选,用了predicate方式进行筛选操作,具体实现如下:

/*
 筛选数组中的对象的相同个数,分组存储,是自定义的对象
 isString:是否字符串数组,不是的话就自定义对象数组,需要指定对象的筛选的key,即对象的属性名
 */
+ (NSArray *)filterMaxItemsArray:(NSArray *)array isStringObj:(BOOL)isString filterKey:(NSString *)key {
    NSMutableArray *origArray = [NSMutableArray arrayWithArray:array];
    NSMutableArray *filerArray = [NSMutableArray array];
    
    while (origArray.count > 0) {
        id obj = origArray.firstObject;
        NSPredicate *predic = nil;
        if (isString) {
            predic = [NSPredicate predicateWithFormat:@"self == %@",obj];
        }else {
            id value = [obj valueForKey:key];
            predic = [NSPredicate predicateWithFormat:@"self.%@ == %@",key,value];
        }
        
        NSArray *pArray = [origArray filteredArrayUsingPredicate:predic];
        [filerArray addObject:pArray];
        [origArray removeObjectsInArray:pArray];
    }
    
    return filerArray;
}

测试一下效果:

    NSArray *array1 = @[@"2018-7-01",@"2018-7-02",@"2018-7-03",
                        @"2018-7-01",@"2018-7-02",@"2018-7-03",
                        @"2018-7-01",@"2018-7-02",@"2018-7-03",
                        @"2018-7-01",@"2018-7-02",@"2018-7-03",
                        @"2018-7-01",@"2018-7-02",@"2018-7-03",
                        @"2018-7-01",@"2018-7-02",@"2018-7-03",
                        @"2018-7-04",@"2018-7-06",@"2018-7-08",
                        @"2018-7-05",@"2018-7-07",@"2018-7-09"];
    NSArray *darray = [DataTools filterMaxItemsArray:array1 isStringObj:YES filterKey:nil];
    NSLog(@"%@",darray);
2018-08-13 10:35:25.042 testDemo[12908:6785403] (
        (
        "2018-7-01",
        "2018-7-01",
        "2018-7-01",
        "2018-7-01",
        "2018-7-01",
        "2018-7-01"
    ),
        (
        "2018-7-02",
        "2018-7-02",
        "2018-7-02",
        "2018-7-02",
        "2018-7-02",
        "2018-7-02"
    ),
        (
        "2018-7-03",
        "2018-7-03",
        "2018-7-03",
        "2018-7-03",
        "2018-7-03",
        "2018-7-03"
    ),
        (
        "2018-7-04"
    ),
        (
        "2018-7-06"
    ),
        (
        "2018-7-08"
    ),
        (
        "2018-7-05"
    ),
        (
        "2018-7-07"
    ),
        (
        "2018-7-09"
    )
)

对非字符串对象的筛选效果也是OK的,就是在传参的时候传要筛选对象的一个键名,就好了。

相关文章

  • iOS 数组相同对象进行分组,存储到新的数组

    时间:2018年8月13日 周一 数组相同对象进行分组,存储到新的数组直接上实现代码在设计上增强了方法的扩展性,可...

  • iOS --一个简单的方法实现对数组中相同属性值对象进行分组

    相信大家或多或少都会遇到这类问题,即: ios 数组中相同属性值对象进行分组 - 简书 一个数组中很多对象,将对象...

  • java 对象数组去重

    java对象数组去重; 将原数组插入到新数组的时候,将插入的对象和新数组中的已插入对象进行比较,若不相同,则插入到...

  • 数组分类

    js对象数组(JSON) 根据某个共同字段 分组 希望的是将下面的对象数组: 根据相同id字段分组,转换成下面这种...

  • 常用js功能封装

    计算相同数组个数 多维数组根据对象进行排序

  • java 数组对象分组

    对数组中的对象按照对象属性的值进行分组

  • ios 数组中相同属性值对象进行分组

    说一下标题意思, 就是一个数组中很多对象,每个对象都有相同属性,然后,属性值也相等的 分别放到一个数组,怎么实现呢...

  • c#常用数据结构解释

    一,数组 Array 特点:数组存储在连续的内存上;数组的内容类型都相同;数组可以通过下面进行直接访问;创建过程:...

  • Array类型【数组】

    数组对象的作用是:使用单独的变量名来存储一系列的值。数组就是一堆数据的分组或者集合。数组的对象是Array,也是非...

  • 【Java基础】- 集合

    对象数组 数组既可以存储基本数据类型,也可以存储引用类型。它存储引用类型的时候的数组就叫对象数组。 比如:用数组存...

网友评论

    本文标题:iOS 数组相同对象进行分组,存储到新的数组

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