将两个数组中的所有字符串放入另一个数组中

时间:2013-06-24 13:10:13

标签: ios cocoa cocoa-touch collections nsarray

假设我有两个阵列:

NSArray * first = @[@"One", @"Two", @"Three"," @Four"];
NSArray * second = @[@"Four", @"Five", @"Six", @"One"];

我想把两者中的对象放到另一个数组中:

NSArray * both = @[@"Four", @"One"]; 

是否有更优雅的方式,而不是通过第一个项目并检查它是否包含在第二个项目中?

3 个答案:

答案 0 :(得分:9)

你基本上需要找到数组的交集,所以你需要在这里使用set:

NSMutableSet *intersection = [NSMutableSet setWithArray:firstArray];
[intersection intersectSet:[NSSet setWithArray:secondArray]];

NSArray *resultArray = [intersection allObjects];

答案 1 :(得分:1)

从2个数组中创建2个NSMutableSet个实例。然后做:

NSArray *result = [[set1 intersectSet:set2] allObjects];

答案 2 :(得分:1)

不确定。只需使用正确的工具即可完成正确的任务。 Alias,使用集合进行设置操作。

NSSet *first = [NSSet setWithArray:array1];
NSMutableSet *second = [NSMutableSet setWithArray:array2];
[second intersectSet:first];
NSArray *commonObjects = [second allObjects];