Compare two NSArrays and return number of differences

前端 未结 2 1173
情书的邮戳
情书的邮戳 2020-12-31 17:22

How can I take two NSArrays, compare them, then return the number of differences, preferably the number of different objects, for example:

Array 1: one two

相关标签:
2条回答
  • 2020-12-31 17:55

    I found that the answer above didn't take arrays of differing size into account. If you do it as above, you should check to see which array.count is smaller and

    [largerArray removeObjectsInArray:shorterArray];
    

    OR

    I made them both NSSets and then compared.

    [set1 isEqualToSet:set2];
    

    That way size and order are both dealt with properly! (I didn't need to know the number of differences)

    0 讨论(0)
  • 2020-12-31 18:03

    You can do this by using an intermediate NSMutableArray:

    NSArray *array1 = [NSArray arrayWithObjects:@"One", @"Two", @"Three", nil];
    NSArray *array2 = [NSArray arrayWithObjects:@"Two", @"Four", @"One", nil];
    NSMutableArray *intermediate = [NSMutableArray arrayWithArray:array1];
    [intermediate removeObjectsInArray:array2];
    NSUInteger difference = [intermediate count];
    

    With that way, only common elements will be removed.

    0 讨论(0)
提交回复
热议问题