次の設定で2つの配列を比較したいのですが、コードの使い方がわかりません。
1つの配列arrayOneを用意し、別の配列arrayTwoと比較します。
2つの配列の違いが見つかったら、それらの違いをarrayOneに追加し、arrayTwoからすべてを削除します。
これはどのように行うことができますか?
次の設定で2つの配列を比較したいのですが、コードの使い方がわかりません。
1つの配列arrayOneを用意し、別の配列arrayTwoと比較します。
2つの配列の違いが見つかったら、それらの違いをarrayOneに追加し、arrayTwoからすべてを削除します。
これはどのように行うことができますか?
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 :()
これを試して。これがお役に立てば幸いです。
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]];
}