NSArray
を2つ比較し、等しいオブジェクトを新しい配列に挿入するにはどうすればよいですか?2つの配列を比較し、等しいオブジェクトを新しい配列に入れよう
2
A
答えて
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返すようyourComparatorとif (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
をあなたの配列内のオブジェクトの種類は何ですか?オブジェクトの値を比較するか、オブジェクト(参照)自体を比較したいですか? – EmptyStack
両方の配列に文字列が含まれているので、共通の文字列を新しい配列に入れたい – sajaz
いいえ。この解決策を試してください。 http://stackoverflow.com/questions/7207805/getting-unique-numbers-from-two-arrays/7207883#7207883 – EmptyStack