2013-05-29 73 views
0

我想比較2個NSMutableArray值並檢查哪個indexPath不同並將這些索引數存儲在一個數組中。 例如我有這方面的NSMutableArray:如何比較2 NSMutableArray並獲得不同數量的值

NSMutableArray *a = [[NSMutableArray alloc]initWithObjects:@"1",@"2",@"3",@"4",@"5",@"6", nil]; 
NSMutableArray *b = [[NSMutableArray alloc]initWithObjects:@"11",@"2",@"5",@"3",@"53",@"6", nil]; 

,我想這兩個指數的NSMutableArray比較指數(比較值的值),並告訴我,這數組的索引這些NSMutableArrays是不同的。例如在兩個NSMutableArray頂部這個指數是不同的(0,2,3,4),我想這個值存儲在某些數組。

回答

0
NSMutableArray* differentIndex; 
differentIndex = [[NSMutableArray alloc] init]; 
for(int i = 0 ; i < [a count]; i++) { 
    if(i < [b count]){ 
     if(![b[i] isEqual:a[i]]){ 
      [differentIndex addObject:[NSNumber numberWithInt:i]]; 
     } 
    } else { 
     [differentIndex addObject:[NSNumber numberWithInt:i]]; 
    } 
} 

現在您的differentIndex包含數組中的所有不同索引。 :)

+1

謝謝我親愛的朋友 – emma

+0

在'isEqual'之前添加了丟失否定。但是,這兩個條件可以很容易合併爲一個,重複的代碼可以被刪除。 – Sulthan

0
NSMutableArray *a = [[NSMutableArray alloc]initWithObjects:@"1",@"2",@"3",@"4",@"5",@"6", nil]; 
NSMutableArray *b = [[NSMutableArray alloc]initWithObjects:@"11",@"2",@"5",@"3",@"53",@"6", nil]; 
NSMutableArray *new = [[NSMutableArray alloc]init]; 
for(int i =0;i<[b count]<=[a count]?[b count]:[a count];i++) 
{ 
    NSString *_keyA = [a objectAtIndex:i]; 
    NSString *_keyB = [b objectAtIndex:i]; 
    if ([_keyA isEqualToString:_keyB]) 
     continue; 
    [new addObject:[NSString stringWithFormat:@"%d",i]]; 
}