需求:在一個數組裡面,將在這個數組中的並且在另一個數組裡面的元素過濾掉。 即:在一個數組dataArray裡面,將在dataArray數組中的並且在filteredArray數組裡面的元素過濾掉。 //iOS-篩選數組內的元素 //在dataArray中裡面,將在dataArray中的並且在filt
需求:在一個數組裡面,將在這個數組中的並且在另一個數組裡面的元素過濾掉。
即:在一個數組dataArray裡面,將在dataArray數組中的並且在filteredArray數組裡面的元素過濾掉。
//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);