比较两个数组?

时间:2013-03-25 02:07:51

标签: iphone objective-c nsarray

我想用以下设置比较两个数组,但不知道如何使用代码。

有一个数组arrayOne,与另一个数组arrayTwo进行比较。

找到两个数组的差异后,将这些差异添加到arrayOne并从arrayTwo中删除所有内容。

如何做到这一点?

2 个答案:

答案 0 :(得分:4)

如果array1具有唯一值:

NSArray *array1=@[@"A",@"B",@"C",@"D"];
NSArray *array2=@[@"A",@"E",@"C"];

NSMutableOrderedSet *set1=[[NSMutableOrderedSet alloc]initWithArray:array1];
NSMutableOrderedSet *set2=[[NSMutableOrderedSet alloc]initWithArray:array2];
[set1 unionOrderedSet:set2];

array1=[set1 array];
array2=@[];

NSLog(@"array1: %@,  array2: %@",array1,array2);

输出:

  

array1 :(           一个,           B,           C,           d,           Ë       )        array2 :(       )

如果array1没有唯一值:

NSMutableArray *unionArray=[NSMutableArray arrayWithArray:array1];
for (NSString *element in array2) {  //compared only for string, if it is some other object need to compare them.
    if (![array1 containsObject:element]) {
        unionArray[unionArray.count]=element;
    }
}
array1=unionArray;
array2=@[];
NSLog(@"array1: %@, array2: %@",array1,array2);

输出:

  

array1 :(       一个,       B,       C,       d,       一个,       E),array2 :()

答案 1 :(得分:0)

试试这个。希望这对你有所帮助。

NSMutableArray *array1 = [NSMutableArray arrayWithObjects:@"One", @"Two", @"Three", nil];

NSMutableArray *array2 = [NSMutableArray arrayWithObjects:@"Two", @"Four", @"One", nil];

NSMutableArray *intermediate = [NSMutableArray arrayWithArray:array2];

[intermediate removeObjectsInArray:array1];

for(int i = 0; i < [intermediate count]; i++)
{
    [array1 addObject:[intermediate objectAtIndex:i]];
}