3

假设我有两个数组:

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

我想将两者中的对象放入另一个数组中:

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

有没有比浏览第一个项目的每个项目并检查其是否包含在第二个项目中更优雅的方法?

4

3 回答 3

9

您基本上需要找到数组的交集,因此您需要在此处使用 set:

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

NSArray *resultArray = [intersection allObjects];
于 2013-06-24T13:13:45.010 回答
1

NSMutableSet从您的 2 个阵列创建 2 个实例。然后做:

NSArray *result = [[set1 intersectSet:set2] allObjects];
于 2013-06-24T13:13:34.250 回答
1

当然。只需使用正确的工具来完成正确的任务。别名,使用集合进行集合操作。

NSSet *first = [NSSet setWithArray:array1];
NSMutableSet *second = [NSMutableSet setWithArray:array2];
[second intersectSet:first];
NSArray *commonObjects = [second allObjects];
于 2013-06-24T13:13:44.017 回答