如何获取两个NSArray,比较它们,然后返回差异的数量,最好是不同对象的数量,例如:
数组1: 一 二 3
数组2: 二 四 一个
我希望返回“1”
答案 0 :(得分:23)
您可以使用中间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];
通过这种方式,只会删除常用元素。
答案 1 :(得分:2)
我发现上面的答案没有考虑到不同大小的数组。如果你这样做,你应该检查哪个array.count更小和
[largerArray removeObjectsInArray:shorterArray];
OR
我把它们作为NSSets然后进行比较。
[set1 isEqualToSet:set2];
这样大小和顺序都得到妥善处理! (我不需要知道差异的数量)