实施例: NSMutable * Array1包含1,2。 NSMutable * Array2包含2,1。
当我们比较这两个Array时,上面的条件应该返回True。请帮我这样做。谢谢。
答案 0 :(得分:1)
你可以这样写:
BOOL areEqual = array1.count == array2.count;
if (areEqual) {
NSMutableArray *array3 = [NSMutableArray arrayWithArray:array2];
for (NSNumber *number in array1) {
[array3 removeObject:number];
}
if (array3.count > 0) {
areEqual = NO;
}
}
答案 1 :(得分:1)
首先按升序排序两个数组,如下所示
NSSortDescriptor* sortOrder = [NSSortDescriptor sortDescriptorWithKey: @"self" ascending: YES];
[array1 sortUsingDescriptors:[NSArray arrayWithObject: sortOrder]];
[array2 sortUsingDescriptors:[NSArray arrayWithObject: sortOrder]];
然后只需将数组比较为
return ([array1 isEqualToArray:array2]);
答案 2 :(得分:0)
试试这个:
这里我返回BOOL,打印为1(是),0(否)。如果要返回True和False,请在comparyArray:withArray:method中使用if-else进行后退。
- (BOOL)compareArray:(NSArray *)first withArray:(NSArray *)second{
first=[first sortedArrayUsingSelector:@selector(compare:)];
second=[second sortedArrayUsingSelector:@selector(compare:)];
return [first isEqualToArray:second];
}
- (void)anyMethod{
NSArray *arr1=@[@1,@2,@3];
NSArray *arr2=@[@3,@1,@21];
NSLog(@"Compare result is %d",[self compareArray:arr1 withArray:arr2]);
}
答案 3 :(得分:0)
如果您可以假设删除重复项(通过NSArray
> NSSet
),则可以按如下方式对数组进行比较:
BOOL equal = [[NSSet setWithArray:array1] isEqualToSet:[NSSet setWithArray:array2]];
也要考虑数组的大小。