0

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

4

2 回答 2

2

一种选择是将索引数组转换为 anNSIndexSet然后使用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]]];
}
于 2012-12-09T14:22:27.130 回答
1

您可以创建集合并使用方法NSMutableSet

NSArray *array1 = @[ @1, @2, @3 ];
NSArray *array2 = @[ @2 ];

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

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

//=>( 2 )
于 2012-12-09T14:18:11.043 回答