Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Compare two arrays with the same value but with a different order

I have 2 nsarray, with the same values but in different order.

NSArray * array1 = {0,1,2,3}
NSArray * array2 = {2,3,1,0}

I need a method to determinate if two arrays have the same values in a different order.

Kind of

-(BOOL) isSameValues:(NSArray*)array1 and:(NSArray*)array2;
like image 929
cmii Avatar asked Mar 29 '13 18:03

cmii


1 Answers

You can use NSCountedSet for that purpose:

- (BOOL)isSameValues:(NSArray*)array1 and:(NSArray*)array2
{
    NSCountedSet *set1 = [NSCountedSet setWithArray:array1];
    NSCountedSet *set2 = [NSCountedSet setWithArray:array2];
    return [set1 isEqualToSet:set2];
}

NSCountedSet is a collection of different objects, where each object has an associated counter with it. Therefore the result for

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

is YES, but for

NSArray *array1 = @[@1,@1,@3,@3];
NSArray *array2 = @[@3,@3,@3,@1];

the result is NO.

like image 197
Martin R Avatar answered Oct 06 '22 23:10

Martin R