筛选数组里面的元素
2016-05-05 11:31
183 查看
//需要去掉的元素数组
NSMutableArray *filteredArray = [[NSMutableArray alloc]initWithObjects:@"1",@"4", nil];
//需要被筛选的数组
NSMutableArray *dataArray = [[NSMutableArray alloc]initWithObjects:@"1",@"2",@"1",@"4",@"6",@"1",@"1",@"4",@"1",@"6",@"4", nil];
/*
方法一:利用NSPredicate
注:NSPredicate所属Cocoa框架,在密码、用户名等正则判断中经常用到。
类似于SQL语句
NOT 不是
SELF 代表字符串本身
IN 范围运算符
那么NOT (SELF IN %@) 意思就是:不是这里所指定的字符串的值
*/
NSPredicate * filterPredicate = [NSPredicate predicateWithFormat:@"NOT (SELF IN %@)",filteredArray];
//过滤数组
NSArray * reslutFilteredArray = [dataArray filteredArrayUsingPredicate:filterPredicate];
NSLog(@"Reslut Filtered Array = %@",reslutFilteredArray);
/*
结果:
Reslut Filtered Array = (
2,
6,
6
)
*/
/*
方法二:从后往前遍历数组,然后匹配删除
*/
int i = (int)[dataArray count]-1;
for(;i >= 0;i --){
//containsObject 判断元素是否存在于数组中(根据两者的内存地址判断,相同:YES 不同:NO)
if([filteredArray containsObject:[dataArray objectAtIndex:i]]) {
[dataArray removeObjectAtIndex:i];
}
}
NSLog(@"Data Array = %@",dataArray);
/*
结果:
Data Array = (
2,
6,
6
)
*/
NSMutableArray *filteredArray = [[NSMutableArray alloc]initWithObjects:@"1",@"4", nil];
//需要被筛选的数组
NSMutableArray *dataArray = [[NSMutableArray alloc]initWithObjects:@"1",@"2",@"1",@"4",@"6",@"1",@"1",@"4",@"1",@"6",@"4", nil];
/*
方法一:利用NSPredicate
注:NSPredicate所属Cocoa框架,在密码、用户名等正则判断中经常用到。
类似于SQL语句
NOT 不是
SELF 代表字符串本身
IN 范围运算符
那么NOT (SELF IN %@) 意思就是:不是这里所指定的字符串的值
*/
NSPredicate * filterPredicate = [NSPredicate predicateWithFormat:@"NOT (SELF IN %@)",filteredArray];
//过滤数组
NSArray * reslutFilteredArray = [dataArray filteredArrayUsingPredicate:filterPredicate];
NSLog(@"Reslut Filtered Array = %@",reslutFilteredArray);
/*
结果:
Reslut Filtered Array = (
2,
6,
6
)
*/
/*
方法二:从后往前遍历数组,然后匹配删除
*/
int i = (int)[dataArray count]-1;
for(;i >= 0;i --){
//containsObject 判断元素是否存在于数组中(根据两者的内存地址判断,相同:YES 不同:NO)
if([filteredArray containsObject:[dataArray objectAtIndex:i]]) {
[dataArray removeObjectAtIndex:i];
}
}
NSLog(@"Data Array = %@",dataArray);
/*
结果:
Data Array = (
2,
6,
6
)
*/
相关文章推荐
- HI3520D在内核中复用UART2,UART3管脚
- tomcat 大并发报错 Maximum number of threads (200) created for connector with address null and port 8080
- Ext中Grid重新load设置URL
- cxf webservice异步调用
- 解决Unable to locate Kerberos realm
- spring AOP 事务配置
- http协议详解
- ASP.NET MVC 应用提速的十种方法
- SVN使用全记录
- if语句和clog中的nil
- Docx4j的Word转PDF及下载PDF
- GitHub入门之一:使用github下载项目
- Plug-in "net.sourceforge.jode" was unable to instantiate class "net.sourcefo
- 09-排序3 Insertion or Heap Sort
- Fragment与Activity相互传递数据:
- TreeMap--左旋右旋
- jAVA EE里什么是链式调用
- mercurial(hg)使用
- C#中实现并发的几种方法的性能测试
- 浅谈 Swift 中的泛型