Если массив1 имеет уникальные значения:
NSArray *[email protected][@"A",@"B",@"C",@"D"];
NSArray *[email protected][@"A",@"E",@"C"];
NSMutableOrderedSet *set1=[[NSMutableOrderedSet alloc]initWithArray:array1];
NSMutableOrderedSet *set2=[[NSMutableOrderedSet alloc]initWithArray:array2];
[set1 unionOrderedSet:set2];
array1=[set1 array];
[email protected][];
NSLog(@"array1: %@, array2: %@",array1,array2);
Выход:
массив1: ( А, В, С, Д, Е ), массив2: ( )
Если массив1 не имеет уникальные значения:
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;
[email protected][];
NSLog(@"array1: %@, array2: %@",array1,array2);
Выход:
массив1: ( А, В, С, D , А, Е ), array2:()
Это будет работать при условии, что каждый элемент 'array1' уникален. Аккуратный трюк, хотя и сохранить порядок. –
@CarlVeazey: обновлено для обоих (отсортировано или несортировано). –
@Vishal: Так почему я должен держать мой один там;) –