GithubHelp home page GithubHelp logo

emonkak / js-enumerable Goto Github PK

View Code? Open in Web Editor NEW
3.0 2.0 0.0 239 KB

A implementation of LINQ to Object for JavaScript that provides the individual methods as a module

License: MIT License

TypeScript 100.00%

js-enumerable's Introduction

@emonkak/enumerable

Build Status Coverage Status

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): TAccumulate
  • all<TSource>(this: Iterable<TSource>, predicate?: (element: TSource) => boolean): boolean
  • any<TSource>(this: Iterable<TSource>, predicate?: (element: TSource) => boolean): boolean
  • average<TSource>(this: Iterable<TSource>, selector?: (element: TSource) => number): number
  • buffer<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): number
  • defaultIfEmpty<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): TSource
  • elementAtOrDefault<TSource>(this: Iterable<TSource>, index: number): TSource | null
  • elementAtOrDefault<TSource>(this: Iterable<TSource>, index: number, defaultValue: TSource): TSource
  • except<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): TSource
  • firstOrDefault<TSource>(this: Iterable<TSource>): TSource | null
  • firstOrDefault<TSource>(this: Iterable<TSource>, predicate: (element: TSource) => boolean): TSource | null
  • firstOrDefault<TSource>(this: Iterable<TSource>, predicate: ((element: TSource) => boolean) | null, defaultValue: TSource): TSource
  • forEach<TSource>(this: Iterable<TSource>, action: (element: TSource) => void): void
  • groupBy<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>): boolean
  • join<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): TSource
  • lastOrDefault<TSource>(this: Iterable<TSource>): TSource | null
  • lastOrDefault<TSource>(this: Iterable<TSource>, predicate: (value: TSource) => boolean): TSource | null
  • lastOrDefault<TSource>(this: Iterable<TSource>, predicate: ((value: TSource) => boolean) | null, defaultValue: TSource): TSource
  • max<TSource>(this: Iterable<TSource>, selector?: (element: TSource) => number): number
  • maxBy<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): number
  • minBy<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): TSource
  • singleOrDefault<TSource>(this: Iterable<TSource>): TSource | null
  • singleOrDefault<TSource>(this: Iterable<TSource>, predicate: (element: TSource) => boolean): TSource | null
  • singleOrDefault<TSource>(this: Iterable<TSource>, predicate: ((element: TSource) => boolean) | null, defaultValue: TSource): TSource
  • skip<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): number
  • take<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>

js-enumerable's People

Contributors

emonkak avatar

Stargazers

M̴̧̡̡̢͎̬͖̬̠̭̱̝̩̪̝̠͎͈̪̰͕͓̼̻͎̮̜̫̬͍̱̭̠̟̖͉͈̺͙͉͒́͂̾̅̚̚͜͜͜Ę̷̡̡̧̨͎͕̟̪̰͍̬̮̥̝̖̯͕̳̳̜̭͖̯͙̜̰̤̼̠̼̪̝̐̔̍̋͜͝R̶̘̹̠̻̺̟̞̦͗̓̓̐̄̀͊̏̔͂͑̉͆͘̕͝T̴̢̨̛̩̮̖̺̱͙̳̪̠̼͐͌̇̀̓́͂̎̔͗͂̄̈́̆́̏̉̀͑͗͐̈́̋̇͌̿̅͒̓͒͒̂͋͘͝͝ avatar mpg-yamato-murakami avatar Ryutaro Yamada avatar

Watchers

 avatar James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.