第一种:利用NSDictionary的AllKeys(AllValues)方法

代码:

NSArray *dataArray = @[@"2018-02-01",@"2018-02-02",@"2018-02-03",
@"2018-02-01",@"2018-02-02",@"2018-02-03",
@"2018-02-01",@"2018-02-03",@"2018-02-03",
@"2018-02-01",@"2018-02-02",@"2018-02-03",
@"2018-02-01",@"2018-02-02",@"2018-02-03",
@"2018-02-01",@"2018-02-02",@"2018-02-03",
@"2018-02-04",@"2018-02-06",@"2018-02-08",
@"2018-02-05",@"2018-02-07",@"2018-02-09"];
NSMutableDictionary *dic = [[NSMutableDictionary alloc]initWithCapacity:];
for(NSString *str in dataArray)
{
[dic setValue:str forKey:str];
}
NSLog(@"%@",[dic allKeys]);

打印结果:

(
"2018-02-09",
"2018-02-02",
"2018-02-08",
"2018-02-01",
"2018-02-07",
"2018-02-06",
"2018-02-05",
"2018-02-04",
"2018-02-03"
)

第二种方法:利用NSSet的AllObjects方法

代码:

NSArray *dataArray = @[@"2018-02-01",@"2018-02-02",@"2018-02-03",
@"2018-02-01",@"2018-02-02",@"2018-02-03",
@"2018-02-01",@"2018-02-03",@"2018-02-03",
@"2018-02-01",@"2018-02-02",@"2018-02-03",
@"2018-02-01",@"2018-02-02",@"2018-02-03",
@"2018-02-01",@"2018-02-02",@"2018-02-03",
@"2018-02-04",@"2018-02-06",@"2018-02-08",
@"2018-02-05",@"2018-02-07",@"2018-02-09"];
NSSet *set = [NSSet setWithArray:dataArray];
NSLog(@"%@",[set allObjects]);

打印结果:

(
"2018-02-01",
"2018-02-02",
"2018-02-03",
"2018-02-04",
"2018-02-06",
"2018-02-08",
"2018-02-05",
"2018-02-07",
"2018-02-09"
)

第三种方法,利用数组的containsObject来去除

代码:

NSArray *dataArray = @[@"2018-02-01",@"2018-02-02",@"2018-02-03",
@"2018-02-01",@"2018-02-02",@"2018-02-03",
@"2018-02-01",@"2018-02-03",@"2018-02-03",
@"2018-02-01",@"2018-02-02",@"2018-02-03",
@"2018-02-01",@"2018-02-02",@"2018-02-03",
@"2018-02-01",@"2018-02-02",@"2018-02-03",
@"2018-02-04",@"2018-02-06",@"2018-02-08",
@"2018-02-05",@"2018-02-07",@"2018-02-09"];
NSMutableArray *listAry = [[NSMutableArray alloc]init];
for (NSString *str in dataArray) {
if (![listAry containsObject:str]) {
[listAry addObject:str];
}
}
NSLog(@"%@",listAry);

打印结果:


 (
"2018-02-01",
"2018-02-02",
"2018-02-03",
"2018-02-04",
"2018-02-06",
"2018-02-08",
"2018-02-05",
"2018-02-07",
"2018-02-09"
)

第四种方法:利用keyValue的方式

代码:


NSArray *dataArray = @[@"2018-02-01",@"2018-02-02",@"2018-02-03",
@"2018-02-01",@"2018-02-02",@"2018-02-03",
@"2018-02-01",@"2018-02-03",@"2018-02-03",
@"2018-02-01",@"2018-02-02",@"2018-02-03",
@"2018-02-01",@"2018-02-02",@"2018-02-03",
@"2018-02-01",@"2018-02-02",@"2018-02-03",
@"2018-02-04",@"2018-02-06",@"2018-02-08",
@"2018-02-05",@"2018-02-07",@"2018-02-09"];
dataArray = [dataArray valueForKeyPath:@"@distinctUnionOfObjects.self"];
NSLog(@"%@",dataArray);

打印结果如下:

(
"2018-02-01",
"2018-02-02",
"2018-02-03",
"2018-02-04",
"2018-02-06",
"2018-02-08",
"2018-02-05",
"2018-02-07",
"2018-02-09"
)

总结:这几种方式都可以实现去除重复的数据,当然也可以用for循环的方式去除方法不再叙述;参考了别人的东西进行的总结

案例的使用:

服务器返回一个带有日期的数组,当然有重复的日期,同一个的日期的列表要在同一个地方的话,头部显示日期的话,可以使用到此方法去除重复的,当然,根据具体的情况代码和逻辑是不同的!

iOS - 去除数组中重复数据的几种方法的更多相关文章

  1. 关于iOS去除数组中重复数据的几种方法

    关于iOS去除数组中重复数据的几种方法   在工作工程中我们不必要会遇到,在数组中有重复数据的时候,如何去除重复的数据呢? 第一种:利用NSDictionary的AllKeys(AllValues)方 ...

  2. php获取数组中重复数据的两种方法

    分享下php获取数组中重复数据的两种方法. 1,利用php提供的函数,array_unique和array_diff_assoc来实现 <?php function FetchRepeatMem ...

  3. JS去除数组中重复值的四种方法

    JS去除数组中重复值的四种方法 1 /// <summary>            o[this[i]] = "";  }      }       newArr.p ...

  4. Js中去除数组中重复元素的6种方法

    方法一: Array.prototype.method1 = function(){ var arr=[]; //定义一个临时数组 for(var i = 0; i < this.length; ...

  5. php去除数组中重复数据

    <?php /** * 去除数组中重复数据 * by www.jbxue.com **/ $input = array("a" => "green" ...

  6. iOS去除数组中重复的model数据

    // 去除数组中model重复 ; i < self.selectedModelArray.count; i++) { ;j < self.selectedModelArray.count ...

  7. PHP去除数组中重复数据的两个例子

    例一: <?php$input = array("a" => "green","", "red"," ...

  8. php 去除数组中重复元素

    去除数组中重复元素, 找了下可以一下两个函数 php array_flip()与array_uniqure() $arr = array(…………) ;// 假设有数组包含一万个元素,里面有重复的元素 ...

  9. JavaScript去除数组中重复的数字

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

随机推荐

  1. andoid-sdk 安装时出现 Stopping ADB server failed(code -1) 错

    出错原因: cmd在path路径找不到adb命令,是因为adb.exe文件存在于android-sdk安装目录platform-tools/子目录下,要将这个路径配置到环境变量里面. 解决方案: 按照 ...

  2. linux 实时查看Tomcat日志信息

    cd /../tomcat/logs 进入tomcat/logs/文件夹下  # tail -f catalina.out

  3. VB2010新特性

    1.取消了连接符(1)","之后(2)"()"前后(3)"{}"前后(4)XML(5)连接字符"&"后(6)赋值 ...

  4. Java Jdk1.8 HashMap源代码阅读笔记二

    三.源代码阅读 3.元素包括containsKey(Object key) /** * Returns <tt>true</tt> if this map contains a ...

  5. 5 -- Hibernate的基本用法 --2 1 Hibernate 下载和安装

    1. 下载Hibernate压缩包 2. 解压:文件结构 ⊙ documentation : 该路径下存放了Hibernate的相关文档,包括Hibernate的参考文档和API文档等. ⊙ lib ...

  6. CentOS 6.4 SSH 免密码登录

    在配置apache集群分布时,要使用SSH免密码登录.假设现在有两台机器apache@svn(192.168.1.100)作为svn机,apache@app(192.168.1.101)作为app机. ...

  7. Python对象(上)

    Python是一门面向对象的语言,在Python中一切都是对象,函数是对象,类型也是对象. 下面就看看Python中对象相关的内容. Python对象基本概念 Python对象有三个基本的要素: 身份 ...

  8. linux-满足多字符条件统计行数

    测试数据: 2017-10-24 14:14:11:1123 [ INFO] order_type=add,order_id=9150882564978710367790292017-10-24 14 ...

  9. Explaining Delegates in C# - Part 1 (Callback and Multicast delegates)

    I hear a lot of confusion around Delegates in C#, and today I am going to give it shot of explaining ...

  10. Lua中的注释

    Lua中有两种注释:行注释和块注释.行注释以“--”开头,可以注释这一行后面的内容.块注释以“--[[”开始,以“--]]”结尾,可以注释这个范围内的整个内容:块注释可以注释多行内容.下面是一个示例: ...