如何检查另一个数组中不存在的数组值

时间:2013-03-08 02:40:57

标签: ios ipad cocoa-touch nsmutablearray

我有两个不同的NSMutabelArray ArrOne和ArrTwo。 Letsay ArrOne = A,B,C和D ArrTwo = C,D,X和Y.所以我需要检查ArrTwo的值是否与ArrOne相同,如果它与ArrOne中的相同,则从ArrTwo中删除项目。在这种情况下,我必须从ArrTwo中删除X和Y.请给我一个主意。

3 个答案:

答案 0 :(得分:4)

NSMutableSet *set = [NSMutableSet setWithArray:arrOne];
[set intersectSet:[NSSet setWithAray:arrTwo];
return [set allObjects];

答案 1 :(得分:3)

您可以使用indicesOfObjectsPassingTest执行此操作,如下所示:

    NSMutableArray *a = [@[@"A",@"B",@"C",@"D"] mutableCopy];
    NSMutableArray *b = [@[@"C",@"D",@"X",@"Y"] mutableCopy];

    NSIndexSet *indxs = [b indexesOfObjectsPassingTest:^BOOL(NSString *obj, NSUInteger idx, BOOL *stop) {
        return ![a containsObject:obj];
    }];

    [b removeObjectsAtIndexes:indxs];

答案 2 :(得分:1)

我找到了一个解决方案并且有效

for (int i=0; i< arrTwo.count; i++)
{ 
    if(![arrOne containsObject:[arrTwo objectAtIndex:i]])
    {
         //do action
         NSLog(@"do delete %@",[arrTwo objectAtIndex:i]);
     }
}

谢谢!