https://github.com/chris-huxtable/cbhmapreducekit
Adds map, filter, and reduce methods to common collection types
https://github.com/chris-huxtable/cbhmapreducekit
Last synced: 26 days ago
JSON representation
Adds map, filter, and reduce methods to common collection types
- Host: GitHub
- URL: https://github.com/chris-huxtable/cbhmapreducekit
- Owner: chris-huxtable
- License: isc
- Created: 2019-12-04T16:20:48.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2020-01-28T20:44:40.000Z (over 5 years ago)
- Last Synced: 2025-03-10T16:18:51.814Z (about 2 months ago)
- Language: Objective-C
- Size: 29.3 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# CBHMapReduceKit
[](https://github.com/chris-huxtable/CBHMapReduceKit/releases)
[](https://cocoapods.org/pods/CBHMapReduceKit)
[](https://github.com/chris-huxtable/CBHMapReduceKit/blob/master/LICENSE)
[](https://github.com/chris-huxtable/CBHMapReduceKit)`CBHMapReduceKit` adds map, filter, and reduce methods to `NSArray`, `NSSet`, `NSOrderedSet`, `NSDictionary` and `NSEnumerator`.
## Examples
### Mapping:
```objective-c
NSArray *array = @[@1, @2, @3, @4, @5, @6, @7, @8, @9, @10];
NSArray *mapping = [array arrayByMapping:^id(NSNumber *object) {
NSUInteger value = [object unsignedIntValue];
return [NSString stringWithFormat:@"%lu", value + value];
}];
/// mapping => @[@"2", @"4", @"6", @"8", @"10", @"12" @"14", @"16", @"18", @"20"];
```### Filtering:
```objective-c
NSArray *array = @[@1, @2, @3, @4, @5, @6, @7, @8, @9, @10];
NSArray *filtered = [array arrayByFiltering:^BOOL(NSNumber *object) {
return ( [object unsignedIntValue] % 2 == 0 );
}];
/// filtered => @[@2, @4, @6, @8, @10];
```### Reducing:
```objective-c
NSArray *array = @[@1, @2, @3, @4, @5, @6, @7, @8, @9, @10];
NSNumber *reduction = [array initial:@0 reduce:^NSNumber *(NSNumber *memo, NSNumber *object) {
return @([memo unsignedIntegerValue] + [object unsignedIntValue]);
}];
/// reduction => @55;
```## Brief Outline of Methods
### Mapping :
#### To `NSArray`:
```objective-c
- (NSArray *)arrayByMapping:(nullable id (^)(ElementType object))transform;
- (NSMutableArray *)mutableArrayByMapping:(nullable id (^)(ElementType object))transform;
```#### To `NSSet` :
```objective-c
- (NSSet *)setByMapping:(nullable id (^)(ElementType object))transform;
- (NSMutableSet *)mutableSetByMapping:(nullable id (^)(ElementType object))transform;
```#### To `NSOrderedSet`:
```objective-c
- (NSOrderedSet *)orderedSetByMapping:(nullable id (^)(ElementType object))transform;
- (NSMutableOrderedSet *)mutableOrderedSetByMapping:(nullable id (^)(ElementType object))transform;
```#### Mutating:
```objective-c
- (instancetype)map:(ElementType (^)(ElementType object))transform;
- (instancetype)compactMap:(nullable ElementType (^)(ElementType object))transform;
```### Filtering:
#### To `NSArray`:
```objective-c
- (NSArray *)arrayByFiltering:(BOOL (^)(ElementType object))predicate;
- (NSMutableArray *)mutableArrayByFiltering:(BOOL (^)(ElementType object))predicate;
```#### To `NSSet`:
```objective-c
- (NSSet *)setByFiltering:(BOOL (^)(ElementType object))predicate;
- (NSMutableSet *)mutableSetByFiltering:(BOOL (^)(ElementType object))predicate;
```#### To `NSOrderedSet`:
```objective-c
- (NSOrderedSet *)orderedSetByFiltering:(BOOL (^)(ElementType object))predicate;
- (NSMutableOrderedSet *)mutableOrderedSetByFiltering:(BOOL (^)(ElementType object))predicate;
```#### Mutating:
```objective-c
- (instancetype)filter:(BOOL (^)(ElementType object))predicate;
```### Reduce:
```objective-c
- (nullable id)initial:(nullable id)initial reduce:(nullable id (^)(id __nullable memo, ObjectType object))reduce;
```## Licence
CBHMapReduceKit is available under the [ISC license](https://github.com/chris-huxtable/CBHMapReduceKit/blob/master/LICENSE).