//iOS-篩選數組內的元素
//在dataArray中里面,將在dataArray中的並且在filteredArray數組里面的元素過濾掉
//需要去掉的元素數組
NSMutableArray *filteredArray = [[NSMutableArray alloc]initWithObjects:@"1",@"3",@"9", nil];
//需要被篩選的數組
NSMutableArray *dataArray = [[NSMutableArray alloc]initWithObjects:@"1",@"2",@"3",@"1",@"1",@"3",@"1",@"5",@"7", 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);
/*
方法二:從后往前遍歷數組,然后匹配刪除
*/
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);