2013-03-25 144 views
0

我想用以下設置比較兩個數組,但不知道如何使用代碼。比較兩個數組?

有一個數組arrayOne,與另一個數組arrayTwo比較。

一旦找到兩個數組的差異,將這些差異添加到arrayOne並從arrayTwo中刪除所有內容。

這怎麼辦?

回答

4

如果ARRAY1具有唯一值:

NSArray *[email protected][@"A",@"B",@"C",@"D"]; 
NSArray *[email protected][@"A",@"E",@"C"]; 

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

array1=[set1 array]; 
[email protected][]; 

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

輸出:

ARRAY1:( A, B, C, d, ë ) 數組2: ( )

如果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; 
[email protected][]; 
NSLog(@"array1: %@, array2: %@",array1,array2); 

輸出:

ARRAY1:( A, B, C, d, A, È ),array2:()

+0

這將適用於'array1'的每個元素都是唯一的條件。儘管維持秩序儘管巧妙。 – 2013-03-25 03:17:21

+0

@CarlVeazey:已更新(已排序或未排序)。 – 2013-03-25 03:24:48

+0

@Vishal:那麼爲什麼我應該在那裏保存一個;) – 2013-03-25 03:39:39

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]]; 
} 
+0

OutPut是:一,二,三,三.....是否正確? – TheTiger 2013-03-25 05:03:26

+0

對不起我的錯誤。我編輯答案。它的輸出是:一,二,三,四。 – Ayaz 2013-03-28 11:38:11