将Mutable Array值与另一个Array的索引匹配,并在该索引处获取其他Array值

时间:2016-10-06 19:36:15

标签: ios objective-c arrays

目标:将存储在Mutable数组中的值(不断变化的数据)与静态数组的索引进行比较。当值匹配时,我想将静态数组的对象添加到新的可变数组中。

示例:

MutableArray在当前状态下的值:

  

(1,2,3)

(索引) - 静态数组的值:

  

(0) - "零"   (1) - "一个"   (2) - "两个"   (3) - "三"   (4) - "四"

从最初的MutableArray获取值并将它们与静态数组索引进行比较。将这些索引的值输出到新的MutableArray

  

("一个""两个""三&#34)

通过将MutableArrayContents通过谓词传递给它来派生初始数组:

NSMutableArray *indexArray = [NSMutableArray array];
for (NSMutableArray* obj in _searchResults)
{
    if([_questionsArray containsObject:obj] && ![indexArray containsObject:obj])
        [indexArray addObject:@([_questionsArray indexOfObject:obj])];
}

IndexArray是" index' s"的数组。

我已尝试过循环,但它们无法正常工作,任何帮助都会受到赞赏。

谢谢!

3 个答案:

答案 0 :(得分:0)

你可以试试这个:

NSArray *staticArr = @[@"Zero",@"One",@"Two",@"Three",@"Four"];
NSArray *otherArr = @[@1,@2,@3];

NSMutableArray * array = [[NSMutableArray alloc] initWithCapacity:[otherArr count]];

for(int i = 0; i < [staticArr count]; i++) {
    for(int j = 0; j < [otherArr count]; j++) {
        if([[otherArr objectAtIndex:j] intValue] == i) {
            [array insertObject:[staticArr objectAtIndex:i] atIndex:j];
            break;
        }
    }
}

答案 1 :(得分:0)

  

试试这个方法

NSArray *staticArr = @[@"Zero", @"One", @"Two", @"Three", @"Four"];
NSArray *otherArr = @[@(1), @(2), @(3)];

NSMutableArray *array = [[NSMutableArray alloc] initWithCapacity:[otherArr count]];

[staticArr enumerateObjectsUsingBlock:^(NSString *string, NSUInteger staticIndex, BOOL *staticStop) {
    [otherArr enumerateObjectsUsingBlock:^(NSNumber *number, NSUInteger index, BOOL *stop) {
        if (number.integerValue == staticIndex) {
            [array insertObject:string atIndex:index];
        }
    }];
}];

答案 2 :(得分:0)

我在选项卡上输入此内容。请原谅任何格式问题

NSMutableArray *indices; //I am omitting the adding of data, it contains required indices as NSNumber objects
NSArray *staticArr = @[@"One", @"Two", @"Three", @"Four", @"Five"];

NSMutableArray *array = [NSMutableArray new];

for(NSNumber *index in indices) {
    NSInteger idx = [index integerValue];
    If(idx < staticArr.count)
    {
        [array addObject:[staticArr objectAtIndex:idx];
    }
}

这将是indices数组中元素的顺序,如果indices数组中有重复,则可能会重复。

这是最简单的方法,有很多方法可以使用Apple的API来获取子阵列