Массивы и коллекции / Массивы

@implementation NSArray (Map)

- (NSArray *)mapUsingBlock:(id (^)(id obj, NSUInteger idx))block {
    NSMutableArray *result = [NSMutableArray arrayWithCapacity:[self count]];
    [self enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
            [result addObject:block(obj, idx)];
    }];
    return result;
}
@end

NSArray<NSNumber *> *numbers = @[@1, @2, @3, @4, @5];
numbers = [numbers mapUsingBlock:^id(NSNumber *number, NSUInteger idx) {
        return [NSNumber numberWithInt:number.intValue * 3];
}];
//numbers is [ 3, 6, 9, 12, 15 ]