Objective-C:查找具有索引的Array在Object中出现的次数

时间:2011-04-29 20:46:18

标签: objective-c nsmutablearray nsarray

我需要一种方法来计算对象在任何给定的MutableArray中出现的次数,然后将对象的索引返回到单独的Mutable Array中。我曾尝试过这种方式,但无法解决这个问题。

所以基本上说我有一个包含2,3,3,4,3,5,3的数组当搜索3时,它应该给我两次,4和一个包含1,2的单独数组, 4,6(对象的索引。

我在网站上看到了以下代码,但无法解决如何修改它,有人可以帮助我吗?

int occurrences = 0;
for(NSString *string in array){
    occurrences += ([string isEqualToString:@"Apple"]?1:0); //certain object is @"Apple"
}

3 个答案:

答案 0 :(得分:6)

int occurrences = 0;
NSMutableArray *indices = [NSMutableArray array];
int i = 0;
for (i = 0; i < [array count]; i++) {
    NSString *obj = [array objectAtIndex:i];
    if ([obj isEqualToString:@"Apple"]) {
        occurrences++;
        [indices addObject:[NSNumber numberWithInt:i]];
    }
}

您也可以使用occurrences删除跟踪并执行类似

的操作
int occurrences = [indices count];

for循环之后。

答案 1 :(得分:0)

  id thingYouAreLookingFor;

  NSIndexSet *result = [array indexesOfObjectsPassingTest:^BOOL(id obj, NSUInteger idx, BOOL *stop) {
    return [thingYouAreLookingFor equals: obj];
  }];

答案 2 :(得分:0)

如果你不介意时间,这是一个简单的方法,它是一个正方形的时间操作。

  1. 保留一个计数器,记录array1中有多少元素出现在array2
  2. 对于array1中的所有元素,测试它是否存在于array2中。如果存在,则反对++,如果不存在,则继续。
  3. 退回柜台。
  4. 使用[myMutableArray containsObject:parameter]返回一个包含元素的数组2的布尔值。