2011-08-29 8 views
2

NSArrayを2つ比較し、等しいオブジェクトを新しい配列に挿入するにはどうすればよいですか?2つの配列を比較し、等しいオブジェクトを新しい配列に入れよう

+0

をあなたの配列内のオブジェクトの種類は何ですか?オブジェクトの値を比較するか、オブジェクト(参照)自体を比較したいですか? – EmptyStack

+0

両方の配列に文字列が含まれているので、共通の文字列を新しい配列に入れたい – sajaz

+0

いいえ。この解決策を試してください。 http://stackoverflow.com/questions/7207805/getting-unique-numbers-from-two-arrays/7207883#7207883 – EmptyStack

答えて

6
NSArray *array1 = [[NSArray alloc] initWithObjects:@"a",@"b",@"c",nil]; 
    NSArray *array2 = [[NSArray alloc] initWithObjects:@"a",@"d",@"c",nil]; 
    NSMutableArray *ary_result = [[NSMutableArray alloc] init]; 
    for(int i = 0;i<[array1 count];i++) 
    { 
     for(int j= 0;j<[array2 count];j++) 
     { 
      if([[array1 objectAtIndex:i] isEqualToString:[array2 objectAtIndex:j]]) 
      { 
       [ary_result addObject:[array1 objectAtIndex:i]]; 
       break; 
      } 
     } 
    } 
    NSLog(@"%@",ary_result);//it will print a,c 
2

回答:

NSArray *firstArr, *secondArr; 
// init arrays here 
NSMutableArray *intersection = [NSMutableArray array]; 
for (id firstEl in firstArr) 
{ 
    for (id secondEl in secondArr) 
    { 
     if (firstEl == secondEl) [intersection addObject:secondEl]; 
    } 
} 
// intersection contains equal objects 

オブジェクトメソッドcompare:を用いて比較します。あなたが別の方法を使用したい場合は、単に同じオブジェクトにYES返すようyourComparatorif (firstEl == secondEl)を置き換える:if ([firstEl yourComparator:secondEl])

+0

@ narayana、ありがとう、私はそれを解決することができました([[array1 objectAtIndex:i] isEqualToString:[array2 objectAtIndex:j]]) – sajaz

1
//i assume u have first and second array with objects 

//NSMutableArray *first = [ [ NSMutableArray alloc]init]; 

//NSMutableArray *second = [ [ NSMutableArray alloc]init];        

NSMutableArray *third = [ [ NSMutableArray alloc]init]; 


    for (id obj in first) { 

     if ([second containsObject:obj]) { 


      [third addObject:obj]; 

     } 


    } 


NSLog(@"third is : %@ \n\n",third); 


more over if u have strings in both array then look at this answer of mine 

Finding Intersection of NSMutableArrays