extra-iterable

  • Version 3.4.2
  • Published
  • 261 kB
  • 2 dependencies
  • MIT license

Install

npm i extra-iterable
yarn add extra-iterable
pnpm add extra-iterable

Overview

An [iterable] is a sequence of values.<br>

Index

Variables

variable END

const END: any;
  • End of iterable.

Functions

function accumulate

accumulate: <T, U = T>(
x: Iterable<T>,
fr: ReduceFunction<T, T | U>,
acc?: T | U
) => IterableIterator<T | U>;
  • Produce accumulating values.

    Parameter x

    an iterable

    Parameter fr

    reduce function (acc, v, i, x)

    Parameter acc

    initial value

    Returns

    fr(acc, v₀), fr(fr(acc, v₀), v₁), ... | fr(acc, v₀) = v₀ if acc not given

function callable

callable: <T>(x: Iterable<T>) => () => T;
  • Generate a function that iterates over values upon invocation.

    Parameter x

    an iterable

    Returns

    fn | fn() → x[0], fn() → x[1], ...

function cartesianProduct

cartesianProduct: <T, U = T>(
xs: Iterable<T>[],
fm?: MapFunction<T[], T[] | U> | null
) => IterableIterator<T[] | U>;
  • List cartesian product of iterables.

    Parameter xs

    iterables

    Parameter fm

    map function (vs, i)

    Returns

    x₀ × x₁ × ... = {[v₀, v₁, ...] | v₀ ∈ x₀, v₁ ∈ x₁, ...] }

function chunk

chunk: <T>(x: Iterable<T>, n?: number, s?: number) => IterableIterator<T[]>;
  • Break iterable into chunks of given size.

    Parameter x

    an iterable

    Parameter n

    chunk size [1]

    Parameter s

    chunk step [n]

    Returns

    x[0..n], x[s..s+n], x[2s..2s+n], ...

function compare

compare: <T, U = T>(
x: Iterable<T>,
y: Iterable<T>,
fc?: CompareFunction<T | U> | null,
fm?: MapFunction<T, T | U> | null
) => number;
  • Compare two iterables.

    Parameter x

    an iterable

    Parameter y

    another iterable

    Parameter fc

    compare function (a, b)

    Parameter fm

    map function (v, i, x)

    Returns

    x<y: -1, x=y: 0, x>y: 1

function concat

concat: <T>(...xs: Iterable<T>[]) => IterableIterator<T>;
  • Append values from iterables.

    Parameter xs

    iterables

    Returns

    ...x₀, ...x₁, ... | [x₀, x₁, ...] = xs

function copy

copy: <T>(
x: Iterable<T>,
y: Iterable<T>,
j?: number,
i?: number,
I?: number
) => IterableIterator<T | undefined>;
  • Copy part of iterable to another.

    Parameter x

    target iterable

    Parameter y

    source iterable

    Parameter j

    write index [0]

    Parameter i

    read start index [0]

    Parameter I

    read end index [END]

    Returns

    x[0..j] ⧺ y[i..I] ⧺ x[j+I-i..]

function copyWithin

copyWithin: <T>(
x: Iterable<T>,
j?: number,
i?: number,
I?: number
) => IterableIterator<T | undefined>;
  • Copy part of iterable within.

    Parameter x

    an iterable

    Parameter j

    write index [0]

    Parameter i

    read start index [0]

    Parameter I

    read end index [END]

    Returns

    x[0..j] ⧺ x[i..I] ⧺ x[j+I-i..]

function count

count: <T>(x: Iterable<T>, ft: TestFunction<T>) => number;
  • Count values which satisfy a test.

    Parameter x

    an iterable

    Parameter ft

    test function (v, i, x)

    Returns

    Σtᵢ | tᵢ = 1 if ft(vᵢ) else 0; vᵢ ∈ x

function countAs

countAs: <T, U = T>(
x: Iterable<T>,
fm?: MapFunction<T, T | U> | null
) => Map<T | U, number>;
  • Count occurrences of values.

    Parameter x

    an array

    Parameter fm

    map function (v, i, x)

    Returns

    Map {value ⇒ count}

function cut

cut: <T>(x: Iterable<T>, ft: TestFunction<T>) => IterableIterator<T[]>;
  • Break iterable when test passes.

    Parameter x

    an iterable

    Parameter ft

    test function (v, i, x)

    Returns

    x[0..j] ⧺ x[j..k] ⧺ ... | ft(x[i]) = true; i = j, k, ...

function cutAt

cutAt: <T>(x: Iterable<T>, is: Iterable<number>) => IterableIterator<T[]>;
  • Break iterable at given indices.

    Parameter x

    an iterable

    Parameter is

    split indices (sorted)

    Returns

    x[0..j] ⧺ x[j..k] ⧺ ... | ft(x[i]) = true; i = j, k, ...; i ∈ is

function cutAtRight

cutAtRight: <T>(x: Iterable<T>, is: Iterable<number>) => IterableIterator<T[]>;
  • Break iterable after given indices.

    Parameter x

    an iterable

    Parameter is

    split indices (sorted)

    Returns

    x[0..j+1] ⧺ x[j+1..k] ⧺ ... | ft(x[i]) = true; i = j, k, ...; i ∈ is

function cutRight

cutRight: <T>(x: Iterable<T>, ft: TestFunction<T>) => IterableIterator<T[]>;
  • Break iterable after test passes.

    Parameter x

    an iterable

    Parameter ft

    test function (v, i, x)

    Returns

    x[0..j+1] ⧺ x[j+1..k] ⧺ ... | ft(x[i]) = true; i = j, k, ...

function cycle

cycle: <T>(x: Iterable<T>, i?: number, n?: number) => IterableIterator<T>;
  • Obtain values that cycle through an iterable.

    Parameter x

    an iterable

    Parameter i

    start index [0]

    Parameter n

    number of values [-1 ⇒ Inf]

    Returns

    x[i..] ⧺ x ⧺ x ⧺ ... with upto n values

function difference

difference: <T, U = T>(
x: Iterable<T>,
y: Iterable<T>,
fc?: CompareFunction<T | U> | null,
fm?: MapFunction<T, T | U> | null
) => IterableIterator<T>;
  • Obtain values not present in another iterable.

    Parameter x

    an iterable

    Parameter y

    another iterable

    Parameter fc

    compare function (a, b)

    Parameter fm

    map function (v, i, x)

    Returns

    x - y = {v | v ∈ x, v ∉ y}

function drop

drop: <T>(x: Iterable<T>, n?: number) => IterableIterator<T>;
  • Discard first n values only.

    Parameter x

    an iterable

    Parameter n

    number of values [1]

    Returns

    x[n..]

function dropRight

dropRight: <T>(x: Iterable<T>, n?: number) => IterableIterator<T>;
  • Discard last n values only.

    Parameter x

    an iterable

    Parameter n

    number of values [1]

    Returns

    x[0..-n]

function dropWhile

dropWhile: <T>(x: Iterable<T>, ft: TestFunction<T>) => IterableIterator<T>;
  • Discard values from left, while a test passes.

    Parameter x

    an iterable

    Parameter ft

    test function (v, i, x)

    Returns

    x[T..] | ft(x[i]) = true ∀ i ∈ [0, T-1] & ft(x[T]) = false

function dropWhileRight

dropWhileRight: <T>(x: Iterable<T>, ft: TestFunction<T>) => IterableIterator<T>;
  • Discard values from right, while a test passes.

    Parameter x

    an iterable

    Parameter ft

    test function (v, i, x)

    Returns

    x[0..T-1] | ft(x[i]) = true ∀ i ∈ [T, |x|-1] & ft(x[T-1]) = false

function entries

entries: <T>(x: Iterable<T>) => IterableIterator<[number, T]>;
  • List all index-value pairs.

    Parameter x

    an iterable

    Returns

    [0, v₀], [1, v₁], ... | vᵢ = x[i]

function every

every: <T>(x: Iterable<T>, ft?: TestFunction<T> | null) => boolean;
  • Check if all values satisfy a test.

    Parameter x

    an iterable

    Parameter ft

    test function (v, i, x)

    Returns

    true if ft(vᵢ) = true for all vᵢ ∈ x

function fill

fill: <T>(x: Iterable<T>, v: T, i?: number, I?: number) => IterableIterator<T>;
  • Fill with given value.

    Parameter x

    an iterable

    Parameter v

    value

    Parameter i

    start index [0]

    Parameter I

    end index [END]

    Returns

    x' | x' = x; x'[i..I] = v

function filter

filter: <T>(x: Iterable<T>, ft: TestFunction<T>) => IterableIterator<T>;
  • Keep the values which pass a test.

    Parameter x

    an iterable

    Parameter ft

    test function (v, i, x)

    Returns

    v₀, v₁, ... | ft(vᵢ) = true; vᵢ ∈ x

function filterAt

filterAt: <T>(x: Iterable<T>, is: number[]) => IterableIterator<T>;
  • Keep the values at given indices.

    Parameter x

    an iterable

    Parameter is

    indices (sorted)

    Returns

    v₀, v₁, ... | vᵢ = x[i]; i ∈ is

function find

find: <T>(x: Iterable<T>, ft: TestFunction<T>) => T | undefined;
  • Find first value passing a test.

    Parameter x

    an iterable

    Parameter ft

    test function (v, i, x)

    Returns

    first v | ft(v) = true; v ∈ x

function findAll

findAll: <T>(x: Iterable<T>, ft: TestFunction<T>) => IterableIterator<T>;
  • Keep the values which pass a test.

    Parameter x

    an iterable

    Parameter ft

    test function (v, i, x)

    Returns

    v₀, v₁, ... | ft(vᵢ) = true; vᵢ ∈ x

function findRight

findRight: <T>(x: Iterable<T>, ft: TestFunction<T>) => T | undefined;
  • Find last value passing a test.

    Parameter x

    an iterable

    Parameter ft

    test function (v, i, x)

    Returns

    last v | ft(v) = true; v ∈ x

function flat

flat: (
x: Iterable<unknown>,
n?: number,
fm?: MapFunction<unknown, unknown> | null,
ft?: TestFunction<unknown> | null
) => IterableIterator<unknown>;
  • Flatten nested iterable to given depth.

    Parameter x

    a nested iterable

    Parameter n

    maximum depth (-1 ⇒ all)

    Parameter fm

    map function (v, i, x)

    Parameter ft

    flatten test (v, i, x) [isList]

    Returns

    flat iterable

function flatMap

flatMap: (
x: Iterable<unknown>,
fm?: MapFunction<unknown, unknown> | null,
ft?: TestFunction<unknown> | null
) => IterableIterator<unknown>;
  • Flatten nested iterable, based on map function.

    Parameter x

    a nested iterable

    Parameter fm

    map function (v, i, x)

    Parameter ft

    flatten test (v, i, x) [isList]

    Returns

    flat iterable

function forEach

forEach: <T>(x: Iterable<T>, fp: ProcessFunction<T>) => void;
  • Call a function for each value.

    Parameter x

    an iterable

    Parameter fp

    process function (v, i, x)

function from

from: <T>(x: Iterator<T> | Iterable<T>) => Iterable<T>;
  • Convert an iterable-like to iterable.

    Parameter x

    an iterator/iterable

    Returns

    x as iterable

function fromApplication

fromApplication: <T>(fm: MapFunction<T, T>, v: T) => IterableIterator<T>;
  • Generate iterable from repeated function application.

    Parameter fm

    map function (v, i)

    Parameter v

    start value

    Returns

    v, fm(v), fm(fm(v)), ...

function fromApply

fromApply: <T>(fm: MapFunction<T, T>, v: T) => IterableIterator<T>;
  • Generate iterable from repeated function application.

    Parameter fm

    map function (v, i)

    Parameter v

    start value

    Returns

    v, fm(v), fm(fm(v)), ...

function fromCall

fromCall: <T, A extends unknown[] = unknown[]>(
fn: (...args: A) => T,
...args: A
) => IterableIterator<T>;
  • Generate iterable from repeated function invocation.

    Parameter fn

    function (impure)

    Parameter args

    arguments

    Returns

    fn(...args), fn(...args), ...

function fromInvocation

fromInvocation: <T, A extends unknown[] = unknown[]>(
fn: (...args: A) => T,
...args: A
) => IterableIterator<T>;
  • Generate iterable from repeated function invocation.

    Parameter fn

    function (impure)

    Parameter args

    arguments

    Returns

    fn(...args), fn(...args), ...

function fromIterator

fromIterator: <T>(x: Iterator<T>) => Iterable<T>;
  • Convert an iterator to iterable.

    Parameter x

    an iterator/iterable

    Returns

    x as iterable

function fromRange

fromRange: (v?: number, V?: number, dv?: number) => IterableIterator<number>;
  • Generate iterable from given number range.

    Parameter v

    start number [0]

    Parameter V

    stop number, excluding [END]

    Parameter dv

    step size [1]

    Returns

    v, v+dv, v+2dv, ...

function get

get: <T>(x: Iterable<T>, i: number) => T | undefined;
  • Get value at index.

    Parameter x

    an iterable

    Parameter i

    index

    Returns

    x[i]

function getAll

getAll: <T>(x: Iterable<T>, is: number[]) => IterableIterator<T | undefined>;
  • Get values at indices.

    Parameter x

    an iterable

    Parameter is

    indices (sorted)

    Returns

    x[i₀], x[i₁], ... | [i₀, i₁, ...] = is

function getPath

getPath: (x: Iterable<unknown>, p: number[]) => unknown;
  • Get value at path in a nested iterable.

    Parameter x

    a nested iterable

    Parameter p

    path

    Returns

    x[i₀][i₁][...] | [i₀, i₁, ...] = p

function group

group: <T, U = T>(
x: Iterable<T>,
fc?: CompareFunction<T | U> | null,
fm?: MapFunction<T, T | U> | null
) => IterableIterator<T[]>;
  • Keep similar values together and in order.

    Parameter x

    an iterable

    Parameter fc

    compare function (a, b)

    Parameter fm

    map function (v, i, x)

    Returns

    x[0..k], x[k..l], ... | fc(x[i], x[j]) = 0; i, j = 0..k / k..l / ...

function hasInfix

hasInfix: <T, U = T>(
x: Iterable<T>,
y: Iterable<T>,
fc?: CompareFunction<T | U> | null,
fm?: MapFunction<T, T | U> | null
) => boolean;
  • Check if iterable contains an infix.

    Parameter x

    an iterable

    Parameter y

    search infix

    Parameter fc

    compare function (a, b)

    Parameter fm

    map function (v, i, x)

    Returns

    x[i..I] = y for some i, I?

function hasPath

hasPath: (x: Iterable<unknown>, p: number[]) => boolean;
  • Check if nested iterable has a path.

    Parameter x

    a nested iterable

    Parameter p

    path

    Returns

    x[i₀][i₁][...] exists? | [i₀, i₁, ...] = p

function hasPrefix

hasPrefix: <T, U = T>(
x: Iterable<T>,
y: Iterable<T>,
fc?: CompareFunction<T | U> | null,
fm?: MapFunction<T, T | U> | null
) => boolean;
  • Check if iterable starts with a prefix.

    Parameter x

    an iterable

    Parameter y

    search prefix

    Parameter fc

    compare function (a, b)

    Parameter fm

    map function (v, i, x)

    Returns

    x[0..|y|] = y?

function hasSubsequence

hasSubsequence: <T, U = T>(
x: Iterable<T>,
y: Iterable<T>,
fc?: CompareFunction<T | U> | null,
fm?: MapFunction<T, T | U> | null
) => boolean;
  • Check if iterable has a subsequence.

    Parameter x

    an iterable

    Parameter y

    search subsequence

    Parameter fc

    compare function (a, b)

    Parameter fm

    map function (v, i, x)

    Returns

    x[i₀] ⧺ x[i₁] ⧺ ... = y, for some i₀, i₁, ...? | i₀ < i₁ < ...

function hasSuffix

hasSuffix: <T, U = T>(
x: Iterable<T>,
y: Iterable<T>,
fc?: CompareFunction<T | U> | null,
fm?: MapFunction<T, T | U> | null
) => boolean;
  • Check if iterable ends with a suffix.

    Parameter x

    an iterable

    Parameter y

    seach suffix

    Parameter fc

    compare function (a, b)

    Parameter fm

    map function (v, i, x)

    Returns

    x[|x|-|y|..] = y?

function hasValue

hasValue: <T, U = T>(
x: Iterable<T>,
v: T,
fc?: CompareFunction<T | U> | null,
fm?: MapFunction<T, T | U> | null
) => boolean;
  • Check if iterable has a value.

    Parameter x

    an iterable

    Parameter v

    search value

    Parameter fc

    compare function (a, b)

    Parameter fm

    map function (v, i, x)

    Returns

    v ∈ x?

head: <T>(x: Iterable<T>, vd?: T) => T | undefined;
  • Get first value.

    Parameter x

    an iterable

    Parameter vd

    default value

    Returns

    x[0] || vd

function includes

includes: <T>(x: Iterable<T>, v: T, i?: number) => boolean;
  • Check if iterable has a value.

    Parameter x

    an iterable

    Parameter v

    search value

    Parameter i

    start index [0]

    Returns

    v ∈ x[i..]?

function index

index: <T>(x: Iterable<T>, i: number) => number;
  • Get zero-based index for element in iterable.

    Parameter x

    an iterable

    Parameter i

    index (-ve: from right)

    Returns

    i' | x[i'] = x[i]; i' ∈ [0, |x|]

function indexOf

indexOf: <T>(x: Iterable<T>, v: T, i?: number) => number;
  • Find first index of a value.

    Parameter x

    an iterable

    Parameter v

    search value

    Parameter i

    start index [0]

    Returns

    index of v in x[i..] if found else -1

function indexRange

indexRange: <T>(x: Iterable<T>, i?: number, I?: number) => [number, number];
  • Get index range for part of iterable.

    Parameter x

    an iterable

    Parameter i

    start index (-ve: from right) [0]

    Parameter I

    end index (-ve: from right) [END]

    Returns

    [i', I'] | i' ≤ I'; i', I' ∈ [0, |x|]

function init

init: <T>(x: Iterable<T>) => IterableIterator<T>;
  • Get values except last.

    Parameter x

    an iterable

    Returns

    x[0..|x|-1]

function interleave

interleave: <T>(xs: Iterable<T>[]) => IterableIterator<T>;
  • Place values from iterables alternately.

    Parameter xs

    iterables

    Returns

    x₀[0], x₁[0], ..., x₀[1], x₁[0], ... | [x₀, x₁, ...] = xs

function intermix

intermix: <T>(
x: Iterable<T>,
y: Iterable<T>,
m?: number,
n?: number,
s?: number,
t?: number
) => IterableIterator<T>;
  • Place values of an iterable between another.

    Parameter x

    an iterable

    Parameter y

    another iterable

    Parameter m

    number of values from x [1]

    Parameter n

    number of values from y [1]

    Parameter s

    step size for x [m]

    Parameter t

    step size for y [n]

    Returns

    x[0..m], y[0..n], x[s..s+m], y[t..t+n], ..., x[k*s..|x|-1] | k ∈ W

function interpolate

interpolate: <T>(x: Iterable<T>, fc: CombineFunction<T>) => IterableIterator<T>;
  • Estimate new values between existing ones.

    Parameter x

    an iterable

    Parameter fc

    combine function (a, b)

    Returns

    x[0], fc(x[0], x[1]), x[1], fc(x[1], x[2]), ..., x[|x|-1]

function intersection

intersection: <T, U = T>(
x: Iterable<T>,
y: Iterable<T>,
fc?: CompareFunction<T | U> | null,
fm?: MapFunction<T, T | U> | null
) => IterableIterator<T>;
  • Obtain values present in both iterables.

    Parameter x

    an iterable

    Parameter y

    another iterable

    Parameter fc

    compare function (a, b)

    Parameter fm

    map function (v, i, x)

    Returns

    x ∩ y = {v | v ∈ x, v ∈ y}

function intersperse

intersperse: <T>(x: Iterable<T>, v: T) => IterableIterator<T>;
  • Place a separator between every value.

    Parameter x

    an iterable

    Parameter v

    separator

    Returns

    x[0], v, x[1], v, ..., x[|x|-1]

function is

is: (v: unknown) => v is Iterable<unknown>;
  • Check if value is an iterable.

    Parameter v

    a value

    Returns

    v is iterable?

function isDisjoint

isDisjoint: <T, U = T>(
x: Iterable<T>,
y: Iterable<T>,
fc?: CompareFunction<T | U> | null,
fm?: MapFunction<T, T | U> | null
) => boolean;
  • Checks if arrays have no value in common.

    Parameter x

    an array

    Parameter y

    another array

    Parameter fc

    compare function (a, b)

    Parameter fm

    map function (v, i, x)

    Returns

    x ∩ y = Φ?

function isEmpty

isEmpty: <T>(x: Iterable<T>) => boolean;
  • Check if an iterable is empty.

    Parameter x

    an iterable

    Returns

    |x| = 0?

function isEqual

isEqual: <T, U = T>(
x: Iterable<T>,
y: Iterable<T>,
fc?: CompareFunction<T | U> | null,
fm?: MapFunction<T, T | U> | null
) => boolean;
  • Check if two iterables are equal.

    Parameter x

    an iterable

    Parameter y

    another iterable

    Parameter fc

    compare function (a, b)

    Parameter fm

    map function (v, i, x)

    Returns

    x=y?

function isIterator

isIterator: (v: unknown) => v is Iterator<unknown, any, undefined>;
  • Check if value is an iterator.

    Parameter v

    a value

    Returns

    v implements {next(), return?(), throw?()}?

function isList

isList: <T>(v: Iterable<T>) => boolean;
  • Check if value is a list (iterable & !string).

    Parameter v

    a value

    Returns

    v is list?

function isMany

isMany: <T>(x: Iterable<T>) => x is Iterable<T>;
  • Check if an iterable can be iterated many times.

    Parameter x

    an iterable

    Returns

    x[<iterator>] ≠ x?

function isOnce

isOnce: <T>(x: Iterable<T>) => x is IterableIterator<T>;
  • Check if an iterable can iterated only once.

    Parameter x

    an iterable

    Returns

    x[<iterator>] = x?

function isUnique

isUnique: <T, U = T>(
x: Iterable<T>,
fc?: CompareFunction<T | U> | null,
fm?: MapFunction<T, T | U> | null
) => boolean;
  • Check if there are no duplicate values.

    Parameter x

    an array

    Parameter fc

    compare function (a, b)

    Parameter fm

    map function (v, i, x)

    Returns

    ∀ vᵢ, vⱼ ∈ x, is vᵢ ≠ vⱼ?

function iterator

iterator: <T>(x: Iterable<T>) => Iterator<T>;
  • Get iterator of an iterable.

    Parameter x

    an iterable

    Returns

    x[<iterator>]()

function join

join: <T>(x: Iterable<T>, sep?: string) => string;
  • Join values together into a string.

    Parameter x

    an iterable

    Parameter sep

    separator [,]

    Returns

    "${v₀}${sep}${v₁}..." | vᵢ ∈ x

function keys

keys: <T>(x: Iterable<T>) => IterableIterator<number>;
  • List all indices.

    Parameter x

    an iterable

    Returns

    0, 1, ..., |x|-1

function last

last: <T>(x: Iterable<T>, vd?: T) => T | undefined;
  • Get last value.

    Parameter x

    an iterable

    Parameter vd

    default value

    Returns

    x[|x|-1]

function lastIndexOf

lastIndexOf: <T>(x: Iterable<T>, v: T, i?: number) => number;
  • Find last index of a value.

    Parameter x

    an iterable

    Parameter v

    search value

    Parameter i

    start index [END-1]

    Returns

    last index of v in x[0..i] if found else -1

function left

left: <T>(x: Iterable<T>, n: number) => IterableIterator<T>;
  • Get values from left.

    Parameter x

    an iterable

    Parameter n

    number of values

    Returns

    x[0..n]

function length

length: <T>(x: Iterable<T>, i?: number, I?: number) => number;
  • Find the length of an iterable.

    Parameter x

    an iterable

    Parameter i

    start index [0]

    Parameter I

    end index [END]

    Returns

    |x[i..I]|

function many

many: <T>(x: Iterable<T>, now?: boolean) => Iterable<T>;
  • Convert a once-like iterable to many.

    Parameter x

    an iterable

    Parameter now

    consume immediately? [false]

    Returns

    x' | x' = x; x' can be iterated multiple times

function map

map: <T, U>(x: Iterable<T>, fm: MapFunction<T, U>) => IterableIterator<U>;
  • Transform values of an iterable.

    Parameter x

    an iterable

    Parameter fm

    map function (v, i, x)

    Returns

    fm(v₀), fm(v₁), ... | vᵢ ∈ x

function max

max: <T, U = T>(
x: Iterable<T>,
fc?: CompareFunction<T | U> | null,
fm?: MapFunction<T, T | U> | null
) => T | undefined;
  • Find largest value.

    Parameter x

    an iterable

    Parameter fc

    compare function (a, b)

    Parameter fm

    map function (v, i, x)

    Returns

    v | v ≥ vᵢ; vᵢ ∈ x

function maxEntry

maxEntry: <T, U = T>(
x: Iterable<T>,
fc?: CompareFunction<T | U> | null,
fm?: MapFunction<T, T | U> | null
) => [number, T | undefined];
  • Find largest entry.

    Parameter x

    an iterable

    Parameter fc

    compare function (a, b)

    Parameter fm

    map function (v, i, x)

    Returns

    [max_index, max_value]

function merge

merge: <T, U = T>(
xs: Iterable<T>[],
fc?: CompareFunction<T | U> | null,
fm?: MapFunction<T, T | U> | null
) => IterableIterator<T>;
  • Merge values from sorted iterables.

    Parameter xs

    iterables

    Parameter fc

    compare function (a, b)

    Parameter fm

    map function (v, i, x)

    Returns

    sort(concat(...xs))

function middle

middle: <T>(x: Iterable<T>, i: number, n?: number) => IterableIterator<T>;
  • Get values from middle.

    Parameter x

    an iterable

    Parameter i

    start index

    Parameter n

    number of values [1]

    Returns

    x[i..i+n]

function min

min: <T, U = T>(
x: Iterable<T>,
fc?: CompareFunction<T | U> | null,
fm?: MapFunction<T, T | U> | null
) => T | undefined;
  • Find smallest value.

    Parameter x

    an iterable

    Parameter fc

    compare function (a, b)

    Parameter fm

    map function (v, i, x)

    Returns

    v | v ≤ vᵢ; vᵢ ∈ x

function minEntry

minEntry: <T, U = T>(
x: Iterable<T>,
fc?: CompareFunction<T | U> | null,
fm?: MapFunction<T, T | U> | null
) => [number, T | undefined];
  • Find smallest entry.

    Parameter x

    an iterable

    Parameter fc

    compare function (a, b)

    Parameter fm

    map function (v, i, x)

    Returns

    [min_index, min_value]

function moveWithin

moveWithin: <T>(
x: Iterable<T>,
j?: number,
i?: number,
I?: number
) => IterableIterator<T>;
  • Move part of iterable within.

    Parameter x

    an iterable

    Parameter j

    write index [0]

    Parameter i

    read start index [0]

    Parameter I

    read end index [END]

    Returns

    x[0..j] ⧺ x[i..I] ⧺ x[j..i] ⧺ x[I..]

function partition

partition: <T>(x: Iterable<T>, ft: TestFunction<T>) => [T[], T[]];
  • Segregate values by test result.

    Parameter x

    an array

    Parameter ft

    test function (v, i, x)

    Returns

    [satisfies, doesnt]

function partitionAs

partitionAs: <T, U = T>(
x: Iterable<T>,
fm?: MapFunction<T, T | U> | null
) => Map<T | U, T[]>;
  • Segregate values by similarity.

    Parameter x

    an array

    Parameter fm

    map function (v, i, x)

    Returns

    Map {key ⇒ values}

function pop

pop: <T>(x: Iterable<T>) => IterableIterator<T>;
  • Get values except last.

    Parameter x

    an iterable

    Returns

    x[0..|x|-1]

function push

push: <T>(x: Iterable<T>, ...vs: T[]) => IterableIterator<T>;
  • Add values to the end.

    Parameter x

    an iterable

    Parameter vs

    values to add

    Returns

    ...x, ...vs

function range

range: <T, U = T>(
x: Iterable<T>,
fc?: CompareFunction<T | U> | null,
fm?: MapFunction<T, T | U> | null
) => [T | undefined, T | undefined];
  • Find smallest and largest values.

    Parameter x

    an iterable

    Parameter fc

    compare function (a, b)

    Parameter fm

    map function (v, i, x)

    Returns

    [min_value, max_value]

function rangeEntries

rangeEntries: <T, U = T>(
x: Iterable<T>,
fc?: CompareFunction<T | U> | null,
fm?: MapFunction<T, T | U> | null
) => [[number, T | undefined], [number, T | undefined]];
  • Find smallest and largest entries.

    Parameter x

    an iterable

    Parameter fc

    compare function (a, b)

    Parameter fm

    map function (v, i, x)

    Returns

    [min_entry, max_entry]

function reduce

reduce: <T, U = T>(
x: Iterable<T>,
fr: ReduceFunction<T, U>,
acc?: U
) => U | undefined;
  • Reduce values of iterable to a single value.

    Parameter x

    an iterable

    Parameter fr

    reduce function (acc, v, i, x)

    Parameter acc

    initial value

    Returns

    fr(fr(acc, v₀), v₁)... | fr(acc, v₀) = v₀ if acc not given

function reject

reject: <T>(x: Iterable<T>, ft: TestFunction<T>) => IterableIterator<T>;
  • Discard the values which pass a test.

    Parameter x

    an iterable

    Parameter ft

    test function (v, i, x)

    Returns

    v₀, v₁, ... | ft(vᵢ) = false; vᵢ ∈ x

function rejectAt

rejectAt: <T>(x: Iterable<T>, is: number[]) => IterableIterator<T>;
  • Discard the values at given indices.

    Parameter x

    an iterable

    Parameter is

    indices (sorted)

    Returns

    v₀, v₁, ... | vᵢ = x[i]; i ∉ is

function remove

remove: <T>(x: Iterable<T>, i: number) => IterableIterator<T>;
  • Remove value at index.

    Parameter x

    an iterable

    Parameter i

    index

    Returns

    x[0..i] ⧺ x[i+1..]

function repeat

repeat: <T>(x: Iterable<T>, n?: number) => IterableIterator<T>;
  • Repeat an iterable given times.

    Parameter x

    an iterable

    Parameter n

    times [-1 ⇒ Inf]

    Returns

    ...x, ...x, ...(n times)

function reverse

reverse: <T>(x: Iterable<T>) => IterableIterator<T>;
  • Reverse the values.

    Parameter x

    an iterable

    Returns

    x[|x|-1], x[|x|-2], ..., x[1], x[0]

right: <T>(x: Iterable<T>, n: number) => IterableIterator<T>;
  • Get values from right.

    Parameter x

    an iterable

    Parameter n

    number of values

    Returns

    x[-n..]

function rotate

rotate: <T>(x: Iterable<T>, n?: number) => IterableIterator<T>;
  • Rotate values in iterable.

    Parameter x

    an iterable

    Parameter n

    rotate amount (+ve: left, -ve: right) [0]

    Returns

    x[n..] ⧺ x[0..n]

function scanUntil

scanUntil: <T>(x: Iterable<T>, ft: TestFunction<T>) => number;
  • Scan from left, until a test passes.

    Parameter x

    an array

    Parameter ft

    test function (v, i, x)

    Returns

    first index where test passes

function scanUntilRight

scanUntilRight: <T>(x: Iterable<T>, ft: TestFunction<T>) => number;
  • Scan from right, until a test passes.

    Parameter x

    an iterable

    Parameter ft

    test function (v, i, x)

    Returns

    first index where test fails till end

function scanWhile

scanWhile: <T>(x: Iterable<T>, ft: TestFunction<T>) => number;
  • Scan from left, while a test passes.

    Parameter x

    an array

    Parameter ft

    test function (v, i, x)

    Returns

    first index where test fails

function scanWhileRight

scanWhileRight: <T>(x: Iterable<T>, ft: TestFunction<T>) => number;
  • Scan from right, while a test passes.

    Parameter x

    an iterable

    Parameter ft

    test function (v, i, x)

    Returns

    first index where test passes till end

search: <T>(x: Iterable<T>, ft: TestFunction<T>) => number;
  • Find index of first value passing a test.

    Parameter x

    an iterable

    Parameter ft

    test function (v, i, x)

    Returns

    first index of value, -1 if not found

function searchAll

searchAll: <T>(x: Iterable<T>, ft: TestFunction<T>) => IterableIterator<number>;
  • Find indices of values passing a test.

    Parameter x

    an iterable

    Parameter ft

    test function (v, i, x)

    Returns

    indices of value

function searchInfix

searchInfix: <T, U = T>(
x: Iterable<T>,
y: Iterable<T>,
fc?: CompareFunction<T | U> | null,
fm?: MapFunction<T, T | U> | null
) => number;
  • Find first index of an infix.

    Parameter x

    an iterable

    Parameter y

    search infix

    Parameter fc

    compare function (a, b)

    Parameter fm

    map function (v, i, x)

    Returns

    first i | x[i..i+|y|] = y else -1

function searchInfixAll

searchInfixAll: <T, U = T>(
x: Iterable<T>,
y: Iterable<T>,
fc?: CompareFunction<T | U> | null,
fm?: MapFunction<T, T | U> | null
) => IterableIterator<number>;
  • Find indices of an infix.

    Parameter x

    an iterable

    Parameter y

    search infix

    Parameter fc

    compare function (a, b)

    Parameter fm

    map function (v, i, x)

    Returns

    i₀, i₁, ... | x[j..j+|y|] = y; j ∈ [i₀, i₁, ...]

function searchInfixRight

searchInfixRight: <T, U = T>(
x: Iterable<T>,
y: Iterable<T>,
fc?: CompareFunction<T | U> | null,
fm?: MapFunction<T, T | U> | null
) => number;
  • Find last index of an infix.

    Parameter x

    an iterable

    Parameter y

    search infix

    Parameter fc

    compare function (a, b)

    Parameter fm

    map function (v, i, x)

    Returns

    first i | x[i..i+|y|] = y else -1

function searchRight

searchRight: <T>(x: Iterable<T>, ft: TestFunction<T>) => number;
  • Find index of last value passing a test.

    Parameter x

    an iterable

    Parameter ft

    test function (v, i, x)

    Returns

    last index of value, -1 if not found

function searchSubsequence

searchSubsequence: <T, U = T>(
x: Iterable<T>,
y: Iterable<T>,
fc?: CompareFunction<T | U> | null,
fm?: MapFunction<T, T | U> | null
) => number;
  • Find first index of a subsequence.

    Parameter x

    an iterable

    Parameter y

    search subsequence

    Parameter fc

    compare function (a, b)

    Parameter fm

    map function (v, i, x)

    Returns

    start index of subsequence, -1 if not found

function searchValue

searchValue: <T, U = T>(
x: Iterable<T>,
v: T,
fc?: CompareFunction<T | U> | null,
fm?: MapFunction<T, T | U> | null
) => number;
  • Find first index of a value.

    Parameter x

    an iterable

    Parameter v

    search value

    Parameter fc

    compare function (a, b)

    Parameter fm

    map function (v, i, x)

    Returns

    first index of value, -1 if not found

function searchValueAll

searchValueAll: <T, U = T>(
x: Iterable<T>,
v: T,
fc?: CompareFunction<T | U> | null,
fm?: MapFunction<T, T | U> | null
) => IterableIterator<number>;
  • Find indices of a value.

    Parameter x

    an iterable

    Parameter v

    search value

    Parameter fc

    compare function (a, b)

    Parameter fm

    map function (v, i, x)

    Returns

    indices of value

function searchValueRight

searchValueRight: <T, U = T>(
x: Iterable<T>,
v: T,
fc?: CompareFunction<T | U> | null,
fm?: MapFunction<T, T | U> | null
) => number;
  • Find last index of a value.

    Parameter x

    an iterable

    Parameter v

    search value

    Parameter fc

    compare function (a, b)

    Parameter fm

    map function (v, i, x)

    Returns

    last index of value, -1 if not found

function set

set: <T>(x: Iterable<T>, i: number, v: T) => IterableIterator<T | undefined>;
  • Set value at index.

    Parameter x

    an iterable

    Parameter i

    index

    Parameter v

    value

    Returns

    x' | x' = x; x'[i] = v

function shift

shift: <T>(x: Iterable<T>) => IterableIterator<T>;
  • Get values except first.

    Parameter x

    an iterable

    Returns

    x[1..|x|]

function size

size: <T>(x: Iterable<T>, i?: number, I?: number) => number;
  • Find the length of an iterable.

    Parameter x

    an iterable

    Parameter i

    start index [0]

    Parameter I

    end index [END]

    Returns

    |x[i..I]|

function slice

slice: <T>(x: Iterable<T>, i?: number, I?: number) => IterableIterator<T>;
  • Get part of an iterable.

    Parameter x

    an iterable

    Parameter i

    start index (-ve: from right) [0]

    Parameter I

    end index (-ve: from right) [END]

    Returns

    x[i..I]

function some

some: <T>(x: Iterable<T>, ft?: TestFunction<T> | null) => boolean;
  • Check if any value satisfies a test.

    Parameter x

    an iterable

    Parameter ft

    test function (v, i, x)

    Returns

    true if ft(vᵢ) = true for some vᵢ ∈ x

function splice

splice: <T>(
x: Iterable<T>,
i?: number,
n?: number,
...vs: T[]
) => IterableIterator<T>;
  • Remove or replaces existing values.

    Parameter x

    an iterable

    Parameter i

    remove index [0]

    Parameter n

    number of values to remove [rest]

    Parameter vs

    values to insert

    Returns

    x[0..i] ⧺ vs ⧺ x[i+n..]

function split

split: <T>(x: Iterable<T>, ft: TestFunction<T>) => IterableIterator<T[]>;
  • Break iterable considering test as separator.

    Parameter x

    an iterable

    Parameter ft

    test function (v, i, x)

    Returns

    x[j..k] ⧺ x[l..m] ⧺ ... | ft(x[i]) = true; i = 0..j / k..l / ...

function splitAt

splitAt: <T>(x: Iterable<T>, is: number[]) => IterableIterator<T[]>;
  • Break iterable considering indices as separator.

    Parameter x

    an iterable

    Parameter is

    indices (sorted)

    Returns

    x[j..k] ⧺ x[l..m] ⧺ ... | ft(x[i]) = true; i = 0..j / k..l / ...; i ∈ is

function swap

swap: <T>(
x: Iterable<T>,
i: number,
j: number
) => IterableIterator<T | undefined>;
  • Exchange two values.

    Parameter x

    an iterable

    Parameter i

    an index

    Parameter j

    another index

    Returns

    x' | x' = x; x'[i] = x[j]; x'[j] = x[i]

function symmetricDifference

symmetricDifference: <T, U = T>(
x: Iterable<T>,
y: Iterable<T>,
fc?: CompareFunction<T | U> | null,
fm?: MapFunction<T, T | U> | null
) => IterableIterator<T>;
  • Obtain values not present in both iterables.

    Parameter x

    an iterable

    Parameter y

    another iterable

    Parameter fc

    compare function (a, b)

    Parameter fm

    map function (v, i, x)

    Returns

    x-y ∪ y-x

function tail

tail: <T>(x: Iterable<T>) => IterableIterator<T>;
  • Get values except first.

    Parameter x

    an iterable

    Returns

    x[1..|x|]

function take

take: <T>(x: Iterable<T>, n?: number) => IterableIterator<T>;
  • Keep first n values only.

    Parameter x

    an iterable

    Parameter n

    number of values [1]

    Returns

    x[0..n]

function takeRight

takeRight: <T>(x: Iterable<T>, n?: number) => IterableIterator<T>;
  • Keep last n values only.

    Parameter x

    an iterable

    Parameter n

    number of values [1]

    Returns

    x[-n..]

function takeWhile

takeWhile: <T>(x: Iterable<T>, ft: TestFunction<T>) => IterableIterator<T>;
  • Keep values from left, while a test passes.

    Parameter x

    an iterable

    Parameter ft

    test function (v, i, x)

    Returns

    x[0..T-1] | ft(x[i]) = true ∀ i ∈ [0, T-1] & ft(x[T]) = false

function takeWhileRight

takeWhileRight: <T>(x: Iterable<T>, ft: TestFunction<T>) => IterableIterator<T>;
  • Keep values from right, while a test passes.

    Parameter x

    an iterable

    Parameter ft

    test function (v, i, x)

    Returns

    x[T..] | ft(x[i]) = true ∀ i ∈ [T, |x|-1] & ft(x[T-1]) = false

function toCallable

toCallable: <T>(x: Iterable<T>) => () => T;
  • Generate a function that iterates over values upon invocation.

    Parameter x

    an iterable

    Returns

    fn | fn() → x[0], fn() → x[1], ...

function toInvokable

toInvokable: <T>(x: Iterable<T>) => () => T;
  • Generate a function that iterates over values upon invocation.

    Parameter x

    an iterable

    Returns

    fn | fn() → x[0], fn() → x[1], ...

function toMany

toMany: <T>(x: Iterable<T>, now?: boolean) => Iterable<T>;
  • Convert a once-like iterable to many.

    Parameter x

    an iterable

    Parameter now

    consume immediately? [false]

    Returns

    x' | x' = x; x' can be iterated multiple times

function toOnce

toOnce: <T>(x: Iterable<T>) => IterableIterator<T>;
  • List all values.

    Parameter x

    an iterable

    Returns

    v₀, v₁, ... | vᵢ = x[i]

function union

union: <T, U = T>(
x: Iterable<T>,
y: Iterable<T>,
fc?: CompareFunction<T | U> | null,
fm?: MapFunction<T, T | U> | null
) => IterableIterator<T>;
  • Obtain values present in any iterable.

    Parameter x

    an iterable

    Parameter y

    another iterable

    Parameter fc

    compare function (a, b)

    Parameter fm

    map function (v, i, x)

    Returns

    x ∪ y = {v | v ∈ x or v ∈ y}

function unique

unique: <T, U = T>(
x: Iterable<T>,
fc?: CompareFunction<T | U> | null,
fm?: MapFunction<T, T | U> | null
) => IterableIterator<T>;
  • Remove duplicate values.

    Parameter x

    an iterable

    Parameter fc

    compare function (a, b)

    Parameter fm

    map function (v, i, x)

    Returns

    v₀, v₁, ... | vᵢ ∈ x; vᵢ ≠ vⱼ ∀ i, j

function unshift

unshift: <T>(x: Iterable<T>, ...vs: T[]) => IterableIterator<T>;
  • Add values to the start.

    Parameter x

    an iterable

    Parameter vs

    values to add

    Returns

    ...vs, ...x

function values

values: <T>(x: Iterable<T>) => IterableIterator<T>;
  • List all values.

    Parameter x

    an iterable

    Returns

    v₀, v₁, ... | vᵢ = x[i]

function zip

zip: <T, U = T[]>(
xs: Iterable<T>[],
fm?: MapFunction<T[], T[] | U> | null,
fe?: EndFunction | null,
vd?: T
) => IterableIterator<T[] | U>;
  • Combine values from iterables.

    Parameter xs

    iterables

    Parameter fm

    map function (vs, i, xs)

    Parameter fe

    end function (dones) [some]

    Parameter vd

    default value

    Returns

    fm([x₀[0], x₁[0], ...]), fm([x₀[1], x₁[1], ...]), ...

Type Aliases

type CombineFunction

type CombineFunction<T> = (a: T, b: T) => T;
  • Handle combining of two values.

    Parameter a

    a value

    Parameter b

    another value

    Returns

    combined value

type CompareFunction

type CompareFunction<T> = (a: T, b: T) => number;
  • Handle comparison of two values.

    Parameter a

    a value

    Parameter b

    another value

    Returns

    a<b: -ve, a=b: 0, a>b: +ve

type EndFunction

type EndFunction = (dones: boolean[]) => boolean;
  • Handle ending of a combined iterable.

    Parameter dones

    iᵗʰ iterable done?

    Returns

    combined iterable done?

type MapFunction

type MapFunction<T, U> = (v: T, i: number, x: Iterable<T> | null) => U;
  • Handle transformation of a value to another.

    Parameter v

    value in iterable

    Parameter i

    index of value in iterable

    Parameter x

    iterable containing the value

    Returns

    transformed value

type ProcessFunction

type ProcessFunction<T> = (v: T, i: number, x: Iterable<T>) => void;
  • Handle processing of values in an iterable.

    Parameter v

    value in iterable

    Parameter i

    index of value in iterable

    Parameter x

    iterable containing the value

type ReadFunction

type ReadFunction<T> = () => T;
  • Handle reading of a single value.

    Returns

    value

type ReduceFunction

type ReduceFunction<T, U> = (acc: U, v: T, i: number, x: Iterable<T>) => U;
  • Handle reduction of multiple values into a single value.

    Parameter acc

    accumulator (temporary result)

    Parameter v

    value in iterable

    Parameter i

    index of value in iterable

    Parameter x

    iterable containing the value

    Returns

    reduced value

type TestFunction

type TestFunction<T> = (v: T, i: number, x: Iterable<T>) => boolean;
  • Handle selection of values in an iterable.

    Parameter v

    value in iterable

    Parameter i

    index of value in iterable

    Parameter x

    iterable containing the value

    Returns

    selected?

Package Files (1)

Dependencies (2)

Dev Dependencies (0)

No dev dependencies.

Peer Dependencies (0)

No peer dependencies.

Badge

To add a badge like this onejsDocs.io badgeto your package's README, use the codes available below.

You may also use Shields.io to create a custom badge linking to https://www.jsdocs.io/package/extra-iterable.

  • Markdown
    [![jsDocs.io](https://img.shields.io/badge/jsDocs.io-reference-blue)](https://www.jsdocs.io/package/extra-iterable)
  • HTML
    <a href="https://www.jsdocs.io/package/extra-iterable"><img src="https://img.shields.io/badge/jsDocs.io-reference-blue" alt="jsDocs.io"></a>