iOS NSArray數組過濾


 

需求:在一個數組里面,將在這個數組中的並且在另一個數組里面的元素過濾掉。

即:在一個數組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);

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM