-1

示例:NSMutable *Array1 包含 1,2。NSMutable *Array2 包含 2,1。

当我们比较这两个数组时,上述条件应该返回 True。请帮我这样做。谢谢。

4

4 回答 4

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;
  }
}
于 2013-01-02T13:28:23.257 回答
1

首先像这样按升序对两个数组进行排序

NSSortDescriptor* sortOrder = [NSSortDescriptor sortDescriptorWithKey: @"self" ascending: YES];
[array1 sortUsingDescriptors:[NSArray arrayWithObject: sortOrder]];
[array2 sortUsingDescriptors:[NSArray arrayWithObject: sortOrder]];

然后简单地将数组比较为

return ([array1 isEqualToArray:array2]);
于 2013-01-02T13:33:00.647 回答
0

试试这个:

在这里,我返回 BOOL,并打印为 1(是)、0(否)。如果要返回 True 和 False,请在 comparyArray:withArray: 方法中通过 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]);
}
于 2013-01-02T13:36:35.553 回答
0

如果您可以假设删除了重复项(通过NSArray> NSSet),则可以按如下方式比较数组:

BOOL equal = [[NSSet setWithArray:array1] isEqualToSet:[NSSet setWithArray:array2]];

还要考虑数组的大小。

于 2013-01-02T13:47:15.703 回答