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

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

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

你可以使用indexesOfObjectsPassingTest来做到这一点,就像这样:

  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]; 

我find了一个解决scheme,它的作品

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

谢谢!