Objective c 从索引中提取目标C可变项数组
嗨,我有两个数组一个有200多个对象(从不改变),另一个是整数数组(作为NSNumber对象)创建第三个数组的最简单方法是什么?该数组是数组1中的所有对象的数组,这些对象包含在数组2的索引数组中。您可以创建集合并使用Objective c 从索引中提取目标C可变项数组,objective-c,arrays,indexing,Objective C,Arrays,Indexing,嗨,我有两个数组一个有200多个对象(从不改变),另一个是整数数组(作为NSNumber对象)创建第三个数组的最简单方法是什么?该数组是数组1中的所有对象的数组,这些对象包含在数组2的索引数组中。您可以创建集合并使用NSMutableSet NSArray *array1 = @[ @1, @2, @3 ]; NSArray *array2 = @[ @2 ]; NSMutableSet *set = [NSMutableSet setWithArray:array1]; [set inter
NSMutableSet
NSArray *array1 = @[ @1, @2, @3 ];
NSArray *array2 = @[ @2 ];
NSMutableSet *set = [NSMutableSet setWithArray:array1];
[set intersectSet:[NSSet setWithArray:array2]];
NSLog(@"%@", set.allObjects);
//=>( 2 )
您可以在
NSMutableSet
NSArray *array1 = @[ @1, @2, @3 ];
NSArray *array2 = @[ @2 ];
NSMutableSet *set = [NSMutableSet setWithArray:array1];
[set intersectSet:[NSSet setWithArray:array2]];
NSLog(@"%@", set.allObjects);
//=>( 2 )
一个选项是将索引数组转换为
NSIndexSet
,然后使用objectsaindex:
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]]];
}
一个选项是将索引数组转换为
NSIndexSet
,然后使用objectsaindex:
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]]];
}
我不认为那是他想要的。@DrummerB。。。但是,如果你逐字逐句地阅读这个问题,实际上是正确的答案。如果他是这个意思,我想他会说“200+数字”而不是“对象”,但你是对的,这绝对不是一个明确的问题。我不认为这是他要找的。@Drumber。。。但是如果你逐字阅读这个问题,实际上是正确的答案。如果他是这个意思,我想他会说“200+数字”而不是“对象”,但你是对的,这绝对不是一个明确的问题。如果你可以使用
NSIndexSet
而不是第二个数组。然后它只是一个[array1 ObjectSatiIndexes:indexSet]
我看到了两种不同的解决方案,都投了赞成票!!!你能举例说明你真正想要什么吗?如果你能使用NSIndexSet
而不是第二个数组。然后它只是一个[array1 ObjectSatiIndexes:indexSet]
我看到了两种不同的解决方案,都投了赞成票!!!你能举例说明你真正想要什么吗?谢谢,这个答案正是我想要的。最后一个问题我得到的数组(已过滤)通过上面的代码变成了一个可imutable数组,我如何将其生成为一个可变数组,以便在需要时对其进行进一步过滤?NSMutableArray*filtered=[NSMutableArray arrayWithArray:[objects ObjectsIndexes:indexSet]谢谢这个答案正是我想要的。最后一个问题我得到的数组(已过滤)通过上面的代码变成了一个可imutable数组,我如何将其生成为一个可变数组,以便在需要时对其进行进一步过滤?NSMutableArray*filtered=[NSMutableArray arrayWithArray:[objects ObjectsIndexes:indexSet]代码>