如何比较两个NSArray并返回它们之间的差异数量,最好是不同对象的数量,例如:
数组1: one two three
数组2: two four one
我希望返回结果为“1”
如何比较两个NSArray并返回它们之间的差异数量,最好是不同对象的数量,例如:
数组1: one two three
数组2: two four one
我希望返回结果为“1”
你可以通过使用一个中间的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];
通过这种方式,只有共同的元素才会被移除。
NSSet
。 - bbum我发现上面的答案没有考虑到不同大小的数组。如果您按照上述方法进行操作,应该检查哪个数组的数量更小,并
[largerArray removeObjectsInArray:shorterArray];
或者
我将它们都转换为 NSSet,然后进行比较。
[set1 isEqualToSet:set2];