比较2 nsmutablearray并在ios中获得不同的对象到第三个数组

NGO*_*GOT 6 cocoa-touch objective-c nsmutablearray ios

我想比较2 NSMutableArray并将不同的对象变为第三Array.我怎样才能做到这一点 ?

Array1可以循环对象.

Array1 = "a", "b","c","d","a","b","c";
Array2 = "a", "b", "c";
Run Code Online (Sandbox Code Playgroud)

然后结果

Array3 = "d";
Run Code Online (Sandbox Code Playgroud)

提前致谢

小智 21

使用集合进行集合操作:

NSSet *set1 = [NSSet setWithArray:array1];
NSMutableSet *set2 = [NSMutableSet setWithArray:array2];
[set2 minusSet:set1];
Run Code Online (Sandbox Code Playgroud)

  • @NGOT:你必须交换`array1`和`array2`,因为在这个答案中,`array2`是"更大"的数组. (2认同)

Bun*_*ylm 7

你也可以尝试一下.

NSMutableArray *array1 = [[NSMutableArray alloc]initWithObjects:@"1",@"2",@"3",@"1", nil];
NSMutableArray *array2 = [[NSMutableArray alloc]initWithObjects:@"2",@"1", nil];    

NSMutableArray *largeArray;
NSMutableArray *shortArray;
if([array1 count] > [array2 count]){
    largeArray = array1;
    shortArray = array2; 
} else {
    largeArray = array2;
    shortArray = array1; 
}
[largeArray removeObjectsInArray:shortArray];

for (NSString *va in largeArray) {
    NSLog(@"%@",va);
}
Run Code Online (Sandbox Code Playgroud)


小智 5

NSMutableArray *gotDiffArry= [[NSMutableArray alloc] init];
for(int i = 0 ; i < FirstArray.count; i++) {
    if(i < seconArray.count){
        if(![seconArray[i] isEqual:firstArray[i]]){
             [gotDiffArry addObject:[NSNumber numberWithInt:i]];
         }
    } else {
        [gotDiffArry addObject:[NSNumber numberWithInt:i]];
    }
}
Run Code Online (Sandbox Code Playgroud)

编辑:

for (int i = 0 ; i < firstArray.count ; i ++)
{

 NSString *search = [firstArray objectAtIndex:i];
 NSPredicate *predicate = [NSPredicate predicateWithFormat:@"ANY SELF CONTAINS %@", search];
 NSMutableArray *temAraay = [secondArray filteredArrayUsingPredicate: predicate];
 if(temArray.count >=0 )
 {
   NSLog("%@", [temArray objectAtIndex:0]); 
 }
}
Run Code Online (Sandbox Code Playgroud)