Objective C mutables索引中的数组提取

时间:2012-12-09 14:09:26

标签: objective-c arrays indexing

嗨我有两个数组,一个有200个对象(从不更改),另一个是整数数组(作为NSNumber对象)什么是创建第三个数组的最简单方法,它将是数组中所有对象的数组1是否包含在数组2的索引数组中?

2 个答案:

答案 0 :(得分:2)

一种选择是将索引数组转换为NSIndexSet,然后使用objectsAtIndexes:

NSArray *objects = @[@"A", @"B", @"C", @"D", @"E", @"F", @"G"];
NSArray *indexArray = @[@(0), @(2), @(6)];

NSMutableIndexSet *indexSet = [NSMutableIndexSet indexSet];
for (NSNumber *number in indexArray) {
    [indexSet addIndex:[number unsignedIntegerValue]];
}
NSArray *filtered = [objects objectsAtIndexes:indexSet];

结果:A, C, G

当然,如果可以,最好直接使用索引集,而不是数组。

或者你可以使用一个简单的循环。

NSMutableArray *filtered = [[NSMutableArray alloc] 
                             initWithCapacity:indexArray.length];
for (NSNumber *number in indexArray) {
    [filtered addObject:objects[[number unsignedIntegerValue]]];
}

答案 1 :(得分:1)

您可以创建集并使用NSMutableSet

上的方法
NSArray *array1 = @[ @1, @2, @3 ];
NSArray *array2 = @[ @2 ];

NSMutableSet *set = [NSMutableSet setWithArray:array1];
[set intersectSet:[NSSet setWithArray:array2]];

NSLog(@"%@", set.allObjects);

//=>( 2 )