比较两个 NSArray 并返回差异数
Posted
技术标签:
【中文标题】比较两个 NSArray 并返回差异数【英文标题】:Compare two NSArrays and return number of differences 【发布时间】:2010-05-30 16:02:19 【问题描述】:如何取两个NSArray,比较,然后返回差异个数,最好是不同对象的个数,例如:
数组 1: 一 二 三
数组 2: 二 四 一个
我希望它返回“1”
【问题讨论】:
为什么是一个而不是两个? 因为有一个元素是不同的。 1 有“三”,2 有“四” 【参考方案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
。【参考方案2】:
我发现上面的答案没有考虑不同大小的数组。如果你按照上面的方法做,你应该检查哪个 array.count 更小,并且
[largerArray removeObjectsInArray:shorterArray];
或
我将它们都做成了 NSSet,然后进行了比较。
[set1 isEqualToSet:set2];
这样尺寸和顺序都得到妥善处理! (我不需要知道差异的数量)
【讨论】:
以上是关于比较两个 NSArray 并返回差异数的主要内容,如果未能解决你的问题,请参考以下文章
Lodash / javascript:比较两个集合并返回差异[重复]