【问题标题】:How do i create an array of index from an array which has my chosen objects?如何从包含我选择的对象的数组中创建索引数组?
【发布时间】:2014-09-05 02:17:35
【问题描述】:
NSMutableArray *myIdentityArray = [[NSMutableArray alloc]initWithObjects:@"3",@"1", @"2",@"0", @"0", @"1",@"3",@"1", @"2",@"0", @"0", @"1", nil];

现在我如何创建一个 Array1,其所有索引都具有对象 1。对于这种情况,它将具有 1、5、7 和 11 作为其元素?

【问题讨论】:

    标签: objective-c arrays indexing nsmutablearray


    【解决方案1】:

    您可以在 NSMutableArray 上使用 indexOfObject:inRange: 方法

    检查此代码:

       NSMutableArray *myIdentityArray = [[NSMutableArray alloc]initWithObjects:@"3",@"1", @"2",@"0", @"0", @"1",@"3",@"1", @"2",@"0", @"0", @"1", nil];
        NSMutableArray * array1 = [NSMutableArray array];
    
        NSUInteger loc = 0;
        NSUInteger len = myIdentityArray.count;
    
        NSRange range = NSMakeRange(loc, len);
        NSUInteger idx = [myIdentityArray indexOfObject:@"1" inRange:range];
    
        while (idx != NSNotFound) {
            [array1 addObject:[NSNumber numberWithUnsignedInteger:idx]];
            loc = idx +1;
            len = myIdentityArray.count - loc;
            range = NSMakeRange(loc, len);
            idx = [myIdentityArray indexOfObject:@"1" inRange:range];
        }
    
        NSLog(@"%@",array1);
    

    【讨论】:

    • 对于这么简单的任务来说太复杂了。
    【解决方案2】:

    您必须使用if 条件来检查每个对象的值,然后将对象的索引存储在数组中。

    请参考:Search NSArray for value matching value

    【讨论】:

      【解决方案3】:

      用一个简单的循环来做到这一点:

      NSMutableArray *myIdentityArray = @[ @"3", @"1", @"2", @"0", @"0", @"1", @"3", @"1", @"2", @"0", @"0", @"1" ];
      NSString *search = @"1";
      
      NSMutableArray *results = [NSMutableArray array];
      
      NSInteger index = 0;
      for (NSString *str in myIdentityArray) {
          if ([str isEqualToString:search]) {
              [results addObject:@(index)];
          }
          index++;
      }
      
      NSLog(@"results = %@", results);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-05-27
        • 2010-12-31
        • 1970-01-01
        • 2019-12-22
        • 2011-04-16
        • 2022-01-18
        • 2016-01-30
        • 2019-04-22
        相关资源
        最近更新 更多