嗨,我有两个数组,一个有 200 + 个对象(从不更改),另一个是整数数组(作为 NSNumber 对象)什么是创建第三个数组的最简单方法,该数组将是数组 1 中所有对象的数组包含在数组 2 的索引数组中?
问问题
230 次
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 回答