2011-08-29 3 views
2

두 개의 NSArray을 비교하고 같은 객체을 새 배열에 삽입하려면 어떻게해야합니까?두 배열을 비교하고 같은 객체를 새 배열에 넣습니다.

+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

관련 문제