从两个数组中获取唯一数字

时间:2011-08-26 16:29:31

标签: iphone objective-c ios nsarray

如果我有一些 NSArrays 填充了 ints NSNumbers ,就像这样:

A: { 12, 23, 45, 56, 67, 78, 99, 234 }
B: { 12, 56, 78, 99, 454, 512 }

如何输出数字在A但不在B中的数组,如

{ 23, 45, 67, 234 }

2 个答案:

答案 0 :(得分:14)

你要做的只是一套固定的操作。所以你可以在这里使用 NSSet 。你应该minusSet:来获得你想要的结果。

NSMutableSet *resultSet = [NSMutableSet setWithArray:A];
NSSet *setB = [NSSet setWithArray:B];

// This is what you need!
[resultSet minusSet:setB];

Array *result = [resultSet allObjects];

答案 1 :(得分:2)

创建一个名为C的NSMutableArray。在A上执行一个循环,尝试在B中找到它的每个元素(使用[B containsObject:elemOfA],它只将-isEqual:elemOfA消息发送给B的每个成员)。如果找到一个元素,什么都不做;如果找不到元素,请将其添加到C。