IOS-篩選數組內的元素 – iPhone手機開發技術文章 iPhone軟體開發教學課程

    //需要去掉的元素數組
    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
     )
     */

發佈留言