[objective-c]比较其他数组一个数组中的所有元素

发布时间: 2017/3/27 4:21:49
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

比方说我有三个 mutablearrays: arr1,arr2 和 arr3。我想要中 arr1 arr2,每个元素的所有元素相都比较,如果 arr2 中的元素包含 arr1 中的所有元素,我想要将其添加到 arr3。于是我就想它会看起来像我下面的代码。有一些智能功能的 objective-c 不知道,或任何方式这能做吗?

for(int i; i < arr2.count; i++)
{
  if([arr2 objectAtIndex:i] containAllElementsInArray:arr1]])
  {
    [arr3 addObject:[arr2 objectAtIndex:i]];
  }
}

解决方法 1:

看到是否数组包含另一个数组的所有元素的最佳方法是使用 NSSets。一个可编程将一组静态的不同的对象,这意味着,当您从一个数组创建一套集将包含在数组中的每个 disctint 对象只有 1 项。换句话说,数组可以具有一个对象的多个副本,一套会只有 1 副本的每个对象。

使用一个可编程的重要部分是调用 isSubsetOfSet 方法的能力︰

isSubsetOfSet︰ 返回一个布尔值,该值指示是否在接收组中的每个对象也是目前在给出的另一种设置。

- (BOOL)isSubsetOfSet:(NSSet *)otherSet

您将需要创建一套从 arr1 和比较这对 arr2,要看它是否该元素的一个子集的每个元素...

NSSet *arr1set = [NSSet setWithArray:arr1];
NSSet *arr2set = [NSSet setWithArray:[arr2 objectAtIndex:i]];

if ([arr1set isSubsetOfSet:arr2set]) {
    // then the element [arr2 objectAtIndex:i] contains all the elements of arr1
    [arr3 addObject:[arr2 objectAtIndex:i]];
}
赞助商