美文网首页
iOS 数组去重的几种常用方法

iOS 数组去重的几种常用方法

作者: Devbrave | 来源:发表于2019-12-04 10:34 被阅读0次

1、利用NSDictionary的AllKeys唯一性

使用方法:将数组元素存入字典,利用字典key的唯一性获取去重之后的AllKeys,即为去重后的数据。
特点:去重后的数组是无序的

    NSArray *array = @[@"a", @"a", @"a", @"b", @"c"];
    NSMutableDictionary *dic = [NSMutableDictionary dictionary];
    for (NSString *str in array) {
        [dic setObject:str forKey:str];
    }
    NSLog(@"%@",dic.allKeys);

2、创建新数组

使用方法:通过数组的containsObject函数判断数据在新数组中是否存在,不存在则加入新数组,存在则放弃。
特点:去重后的数组顺序不变

    NSArray *array = @[@"a", @"a", @"a", @"b", @"c"];
    NSMutableArray *newArray = [NSMutableArray array];
    for (NSString *str in array) {
        if (![newArray containsObject:str]) {
            [newArray addObject:str];
        }
    }
    NSLog(@"%@", newArray);

3、利用NSSet存储数据的互异性

使用方法:将数据存入NSSet中,再将NSSet转为数组
特点:得到的数据是无序的

  NSArray *array = @[@"a", @"a", @"a", @"b", @"c"];
    NSSet *set = [NSSet setWithArray:array];
    NSArray *newArray = [set allObjects];
    NSLog(@"%@", newArray);

4、利用valueForKeyPath去重

使用方法:通过valueForKeyPath中的对象操作符@distinctUnionOfObjects实现数组去重
特点:去重后的数组是无序的

    NSArray *array = @[@"a", @"a", @"a", @"b", @"c"];
    NSArray *newArray = [array valueForKeyPath:@"@distinctUnionOfObjects.self"];
    NSLog(@"%@", newArray);

补充:与@distinctUnionOfObjects对应的返回keyPath指定对象的不去重数组。

    Person *person1 = [[Person alloc] init];
    person1.name = @"aab";
    
    Person *person2 = [[Person alloc] init];
    person2.name = @"aab";
    
    Person *person3 = [[Person alloc] init];
    person3.name = @"aac";

    NSArray *personArray = @[person1, person2, person3];
    NSArray *nameArray = [personArray valueForKeyPath:@"@unionOfObjects.name"];
    NSLog(@"%@", nameArray);
//输出结果如下
(
    aab,
    aab,
    aac
)

在写这篇小记的时候发现valueForKeyPath还有很多有趣的用法,限于篇幅就不过多的讲解。等有空单独写一篇进行讲解。

相关文章

  • iOS 数组去重的几种常用方法

    1、利用NSDictionary的AllKeys唯一性 使用方法:将数组元素存入字典,利用字典key的唯一性获取去...

  • 数组去重的几种方法

    数组去重的几种方法 ES6 Set去重(ES6常用) -不修改原数组 不考虑兼容性,这种去重的方法代码最少。这种方...

  • 数组

    数组 数组常用方法 数组去重

  • Array集结号

    实现数组去重的几种方法 数组去重一 数组去重二 利用数组indexof+push实现数组去重 数组去重三 利用对象...

  • 数组去重

    推荐几种数组去重的方法

  • iOS-常见类型对象

    一、iOS 数组去重的方法

  • 数组去重4种方法

    怎么把类数组转换为数组? 数组去重4几种方法:

  • 整理数组去重的几种常用方法

    类似于数组,但是 它的成员都是唯一的 ,其构造函数可以接受一个数组作为参数 ES6中Array新增了一个静态方法A...

  • JavaScript数组去重

    JavaScript中数组的常用操作之数组去重 方法一 方法二

  • 数组去重

    分类 非对象数组去重 对象数组去重 分类一 --- 非对象数组去重 方法一: set(es6常用) 方法二:red...

网友评论

      本文标题:iOS 数组去重的几种常用方法

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