0

次の設定で2つの配列を比較したいのですが、コードの使い方がわかりません。

1つの配列arrayOneを用意し、別の配列arrayTwoと比較します。

2つの配列の違いが見つかったら、それらの違いをarrayOneに追加し、arrayTwoからすべてを削除します。

これはどのように行うことができますか?

4

2 に答える 2

4

array1に一意の値がある場合:

NSArray *array1=@[@"A",@"B",@"C",@"D"];
NSArray *array2=@[@"A",@"E",@"C"];

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

array1=[set1 array];
array2=@[];

NSLog(@"array1: %@,  array2: %@",array1,array2);

出力:

array1 :( A、B、C、D、E)、array2 :()

array1に一意の値がない場合:

NSMutableArray *unionArray=[NSMutableArray arrayWithArray:array1];
for (NSString *element in array2) {  //compared only for string, if it is some other object need to compare them.
    if (![array1 containsObject:element]) {
        unionArray[unionArray.count]=element;
    }
}
array1=unionArray;
array2=@[];
NSLog(@"array1: %@, array2: %@",array1,array2);

出力:

array1 :( A、B、C、D、A、E)、array2 :()

于 2013-03-25T03:15:04.007 に答える
0

これを試して。これがお役に立てば幸いです。

NSMutableArray *array1 = [NSMutableArray arrayWithObjects:@"One", @"Two", @"Three", nil];

NSMutableArray *array2 = [NSMutableArray arrayWithObjects:@"Two", @"Four", @"One", nil];

NSMutableArray *intermediate = [NSMutableArray arrayWithArray:array2];

[intermediate removeObjectsInArray:array1];

for(int i = 0; i < [intermediate count]; i++)
{
    [array1 addObject:[intermediate objectAtIndex:i]];
}
于 2013-03-25T04:40:28.200 に答える