4.0.0 • Published 6 years ago
@emonkak/enumerable v4.0.0
@emonkak/enumerable
This library provides the individual methods of LINQ as a module.
Example
import select from '@emonkak/enumerable/select';
Array.from(select.call([1, 2, 3], (x) => x * 2)); // => [2, 4, 6]You can use method chain by using This-Binding Syntax.
import select from '@emonkak/enumerable/select';
import where from '@emonkak/enumerable/where';
import toArray from '@emonkak/enumerable/toArray';
[1, 2, 3]
::where((x) => x % 2 === 0)
::select((x) => x * 2)
::toArray(); // => [4]But This-Binding Syntax is still in a proposal yet. So you can not use this without transpiring.
You can use the extension modules instead of this.
The extension modules add the method to Enumerable class.
import Enumerable from '@emonkak/enumerable';
import '@emonkak/enumerable/extensions/select';
import '@emonkak/enumerable/extensions/where';
import '@emonkak/enumerable/extensions/toArray';
new Enumerable([1, 2, 3])
.where((x) => x % 2 === 0)
.select((x) => x * 2)
.toArray(); // => [4]You can also use the HOF(higher-order function) modules.
The HOF modules provides the function that returns the function that receives the Enumerable and returns the result.
This function can uses by pipe() and let() method of Enumerable.
import Enumerable from '@emonkak/enumerable';
import select from '@emonkak/enumerable/hof/select';
import where from '@emonkak/enumerable/hof/where';
import toArray from '@emonkak/enumerable/hof/toArray';
new Enumerable([1, 2, 3])
.pipe(
where((x) => x % 2 === 0),
select((x) => x * 2)
)
.let(toArray()); // => [4]API
aggregate<TSource, TAccumulate>(this: Iterable<TSource>, seed: TAccumulate, func: (result: TAccumulate, element: TSource) => TAccumulate): TAccumulateall<TSource>(this: Iterable<TSource>, predicate?: (element: TSource) => boolean): booleanany<TSource>(this: Iterable<TSource>, predicate?: (element: TSource) => boolean): booleanaverage<TSource>(this: Iterable<TSource>, selector?: (element: TSource) => number): numberbuffer<TSource>(this: Iterable<TSource>, count: number, skip?: number): Iterable<TSource[]>catch<TSource, TException>(this: Iterable<TSource>, handler: (exception: TException) => Iterable<TSource>): Iterable<TSource>concat<TSource>(this: Iterable<TSource>, second: Iterable<TSource>): Iterable<TSource>count<TSource>(this: Iterable<TSource>, predicate?: (item: TSource) => boolean): numberdefaultIfEmpty<TSource>(this: Iterable<TSource>, defaultValue: TSource): Iterable<TSource>distinct<TSource>(this: Iterable<TSource>): Iterable<TSource>distinctUntilChanged<TSource>(this: Iterable<TSource>): Iterable<TSource>do<TSource>(this: Iterable<TSource>, action: (element: TSource) => void): Iterable<TSource>doWhile<TSource>(this: Iterable<TSource>, condition: () => boolean): Iterable<TSource>elementAt<TSource>(this: Iterable<TSource>, index: number): TSourceelementAtOrDefault<TSource>(this: Iterable<TSource>, index: number): TSource | nullelementAtOrDefault<TSource>(this: Iterable<TSource>, index: number, defaultValue: TSource): TSourceexcept<TSource>(this: Iterable<TSource>, second: Iterable<TSource>): Iterable<TSource>finally<TSource>(this: Iterable<TSource>, finallyAction: () => void): Iterable<TSource>first<TSource>(this: Iterable<TSource>, predicate?: (element: TSource) => boolean): TSourcefirstOrDefault<TSource>(this: Iterable<TSource>): TSource | nullfirstOrDefault<TSource>(this: Iterable<TSource>, predicate: (element: TSource) => boolean): TSource | nullfirstOrDefault<TSource>(this: Iterable<TSource>, predicate: ((element: TSource) => boolean) | null, defaultValue: TSource): TSourceforEach<TSource>(this: Iterable<TSource>, action: (element: TSource) => void): voidgroupBy<TSource, TKey>(this: Iterable<TSource>, keySelector: (element: TSource) => TKey): Iterable<[TKey, TSource]>groupBy<TSource, TKey, TElement>(this: Iterable<TSource>, keySelector: (element: TSource) => TKey, elementSelector: (element: TSource) => TElement): Iterable<[TKey, TElement]>groupJoin<TOuter, TInner, TKey, TResult>(this: Iterable<TOuter>, inner: Iterable<TInner>, outerKeySelector: (element: TOuter) => TKey, innerKeySelector: (element: TInner) => TKey, resultSelector: (outer: TOuter, inner: TInner[]) => TResult): Iterable<TResult>ignoreElements<TSource>(this: Iterable<TSource>): Iterable<TSource>intersect<TSource>(this: Iterable<TSource>, second: Iterable<TSource>): Iterable<TSource>isEmpty<TSource>(this: Iterable<TSource>): booleanjoin<TOuter, TInner, TKey, TResult>(this: Iterable<TOuter>, inner: Iterable<TInner>, outerKeySelector: (element: TOuter) => TKey, innerKeySelector: (element: TInner) => TKey, resultSelector: (outer: TOuter, inner: TInner) => TResult): Iterable<TResult>last<TSource>(this: Iterable<TSource>, predicate?: (value: TSource) => boolean): TSourcelastOrDefault<TSource>(this: Iterable<TSource>): TSource | nulllastOrDefault<TSource>(this: Iterable<TSource>, predicate: (value: TSource) => boolean): TSource | nulllastOrDefault<TSource>(this: Iterable<TSource>, predicate: ((value: TSource) => boolean) | null, defaultValue: TSource): TSourcemax<TSource>(this: Iterable<TSource>, selector?: (element: TSource) => number): numbermaxBy<TSource, TKey>(this: Iterable<TSource>, keySelector: (element: TSource) => TKey): TSource[]memoize<TSource>(this: Iterable<TSource>): Iterable<TSource>min<TSource>(this: Iterable<TSource>, selector?: (element: TSource) => number): numberminBy<TSource, TKey>(this: Iterable<TSource>, keySelector: (element: TSource) => TKey): TSource[]onErrorResumeNext<TSource>(this: Iterable<TSource>, second: Iterable<TSource>): Iterable<TSource>orderBy<TSource>(this: Iterable<TSource>): OrderedEnumerable<TSource, TSource>orderByDescending<TSource>(this: Iterable<TSource>): OrderedEnumerable<TSource, TSource>repeat<TSource>(this: Iterable<TSource>, count?: number): Iterable<TSource>retry<TSource>(this: Iterable<TSource>, retryCount?: number): Iterable<TSource>reverse<TSource>(this: Iterable<TSource>): Iterable<TSource>scan<TSource, TAccumulate>(this: Iterable<TSource>, seed: TAccumulate, func: (result: TAccumulate, element: TSource) => TAccumulate): Iterable<TAccumulate>select<TSource, TResult>(this: Iterable<TSource>, selector: (element: TSource) => TResult): Iterable<TResult>selectMany<TSource, TResult>(this: Iterable<TSource>, collectionSelector: (element: TSource) => Iterable<TResult>): Iterable<TResult>single<TSource>(this: Iterable<TSource>, predicate?: (element: TSource) => boolean): TSourcesingleOrDefault<TSource>(this: Iterable<TSource>): TSource | nullsingleOrDefault<TSource>(this: Iterable<TSource>, predicate: (element: TSource) => boolean): TSource | nullsingleOrDefault<TSource>(this: Iterable<TSource>, predicate: ((element: TSource) => boolean) | null, defaultValue: TSource): TSourceskip<TSource>(this: Iterable<TSource>, count: number): Iterable<TSource>skipLast<TSource>(this: Iterable<TSource>, count: number): Iterable<TSource>skipWhile<TSource>(this: Iterable<TSource>, predicate: (element: TSource) => boolean): Iterable<TSource>startWith<TSource>(this: Iterable<TSource>, ...elements: TSource[]): Iterable<TSource>sum<TSource>(this: Iterable<TSource>, selector?: (element: TSource) => number): numbertake<TSource>(this: Iterable<TSource>, count: number): Iterable<TSource>takeLast<TSource>(this: Iterable<TSource>, count: number): Iterable<TSource>takeWhile<TSource>(this: Iterable<TSource>, predicate: (element: TSource) => boolean): Iterable<TSource>toArray<TSource>(this: Iterable<TSource>): TSource[]toDictionary<TSource, TKey>(this: Iterable<TSource>, keySelector: (element: TSource) => TKey): Map<TKey, TSource>toLookup<TSource, TKey>(this: Iterable<TSource>, keySelector: (element: TSource) => TKey): Map<TKey, TSource[]>toObject<TSource>(this: Iterable<TSource>, keySelector: (element: TSource) => string): { [key: string]: TSource; }union<TSource>(this: Iterable<TSource>, second: Iterable<TSource>): Iterable<TSource>where<TSource>(this: Iterable<TSource>, predicate: (item: TSource) => boolean): Iterable<TSource>while<TSource>(this: Iterable<TSource>, condition: () => boolean): Iterable<TSource>zip<TFirst, TSecond, TResult>(this: Iterable<TFirst>, second: Iterable<TSecond>, resultSelector: (first: TFirst, second: TSecond) => TResult): Iterable<TResult>