-1

以下に示す2つの配列として入力しました

NSArray *array1=[[NSArray alloc]initWithObjects:@"1",@"2",@"3", nil];

NSArray *array2=[[NSArray alloc]initWithObjects:@"1",@"2",@"1", nil];

出力は次のようになります。同じ要素は一度だけキャンセルする必要があります。

NSArray *array3=[[NSArray alloc]initWithObjects:@"1",@"2", nil];

前もって感謝します.....

4

5 に答える 5

1
NSArray *array1 = @[@"1",@"2",@"3"];

NSArray *array2 = @[@"1",@"2",@"1"];

NSMutableSet *allElemets = [NSSet setWithArray:array1];
[allElemets addObjectsFromArray:array2];

これにより、重複することなくすべての要素が返されます。この場合は

@ "1"、@ "2"、@ "3"

編集:

これにより、配列の共通部分が返されます

NSMutableSet *set1 = [NSMutableSet setWithArray:array1];
NSSet *set2 = [NSSet setWithArray:array2];
[set1 intersectSet:set2];
于 2012-10-25T06:39:16.737 に答える
0

配列の代わりにセットで問題がない場合は、NSArrayの代わりにNSMutableSetを使用できます。NSMutableSetには、intersectSet:やminusSet:などの優れたメソッドがあります。

于 2012-10-25T06:36:57.450 に答える
0
if([[array1 objectAtIndex:i] isEqualToString:[array2 objectAtIndex:i]])
{

            [array2 removeObjectAtIndex: i];                
            NSLog(@"same element removed.");

}

array3 = [firstArray arrayByAddingObjectsFromArray:secondArray];

また

NSMutableSet *set = [NSMutableSet setWithArray:array1];
[set addObjectsFromArray:array2];

array3 = [set allObjects];

2つの配列が比較され、重複する値が削除され、値が取得されます。

于 2012-10-25T06:52:29.657 に答える
0

NSCountedSet上記の状況に使用する

 NSMutableArray *array1=[[NSMutableArray alloc]initWithObjects:@"r",@"a",@"r",@"r",@"r", nil]; 

    NSArray *array2=[[NSArray alloc]initWithObjects:@"b",@"c",@"r", nil];


    NSMutableSet *setOne = [NSMutableSet setWithArray: array1];
    NSSet *setTwo = [NSSet setWithArray: array2];

    [setOne unionSet:setTwo];

    NSArray *arrayOneResult = [setOne allObjects];

    NSLog(@"%@",arrayOneResult);

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

    NSCountedSet *set = [[NSCountedSet alloc] initWithArray:arrayOneResult];

    for (id item in set)
    {

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

        int diff = abs([set1 countForObject:item] - [set2 countForObject:item]);

        for (int  i = 0 ;i < diff ;i++ ) {
            [resultArray addObject:item];
        }


    }

    NSLog(@"the array : %@",resultArray   ); 
于 2012-10-25T06:55:55.903 に答える
0

ここにコードがあります

EDIt:これにより、重複する付加価値の一意の値が削除されます。

NSArray *array1=[[NSArray alloc]initWithObjects:@"1",@"2",@"3", nil];

NSArray *array2=[[NSArray alloc]initWithObjects:@"1",@"2",@"1", nil];

//Here Create nEw  Array with Arra1 
NSMutableArray * newArray =[[NSMutableArray alloc] initWithArray:array1];
for(int index=0; index<[array2 count];index++)
{
    id object =[array2 objectAtIndex:index];
    if(![newArray containsObject:object])//this methods Returns YES/NO 
    {
        [newArray addObject: object];

    }

}
于 2012-10-25T09:17:14.207 に答える