Spec-Zone.ru › Immutable.js

Стек

Стеки — это индексированные коллекции, которые поддерживают очень эффективное добавление и удаление элементов с начала за счёт операций O(1) с помощью unshift(v) и shift().

type Stack<T> extends Collection.Indexed<T>

Обсуждение

Для удобства использования, Стек также предоставляет push(v), pop(), и peek(), но имейте в виду, что они также работают с началом списка, в отличие от Списка или JavaScript массива.

Примечание: reverse() или любая врождённая обратная итерация (reduceRight, lastIndexOf, и т.д.) не является эффективной при работе со Стеком.

Стек реализован с помощью односвязного списка.

Создание

Stack()

Создайте новый неизменяемый Стек, содержащий значения предоставленной коллекции.

Stack<T>(collection?: Iterable<T> | ArrayLike<T>): Stack<T>

Обсуждение

Порядок итерации предоставленной коллекции сохраняется в полученном Stack.

Примечание: Stack — это функция-фабрика, а не класс, и не использует ключевое слово new при создании.

Статические методы

Stack.isStack()

Stack.isStack(maybeStack: unknown): boolean

Stack.of()

Stack.of<T>(...values: Array<T>): Stack<T>

Члены

size

Количество элементов в этом Стеке.

size: number

Чтение значений

peek()

Псевдоним для Stack.first().

peek(): T | undefined

get()

get<NSV>(index: number, notSetValue: NSV): T | NSV
get(index: number): T | undefined

Унаследовано от

Collection.Indexed#get()

has()

True, если ключ существует в этом Collection, используя Immutable.is для определения равенства

has(key: number): boolean

Унаследовано от

Collection#has()

includes()

True, если значение существует в этом Collection, используя Immutable.is для определения равенства

includes(value: T): boolean

Унаследовано от

Collection#includes()

псевдоним

contains()

first()

В случае, если Collection не пуст, возвращает первый элемент Collection. В случае, если Collection пуст, возвращает необязательное значение по умолчанию, если оно задано; в противном случае возвращает undefined.

first<NSV>(notSetValue?: NSV): T | NSV

Унаследовано от

Collection#first()

last()

В случае, если Collection не пуст, возвращает последний элемент Collection. В случае, если Collection пуст, возвращает необязательное значение по умолчанию, если оно задано; в противном случае возвращает undefined.

last<NSV>(notSetValue?: NSV): T | NSV

Унаследовано от

Collection#last()

Постоянные изменения

clear()

Возвращает новый Стек с размером 0 и без значений.

clear(): Stack<T>

Обсуждение

Примечание: clear может быть использован в withMutations.

unshift()

Возвращает новый Стек с предоставленным values в начале, сдвигающим другие значения вперёд.

unshift(...values: Array<T>): Stack<T>

Обсуждение

Это очень эффективно для Стека.

Примечание: unshift может быть использован в withMutations.

unshiftAll()

Подобно Stack#unshift, но принимает коллекцию вместо аргументов.

unshiftAll(iter: Iterable<T>): Stack<T>

Обсуждение

Примечание: unshiftAll может быть использован в withMutations.

shift()

Возвращает новый Стек с размером на единицу меньше, чем у этого Стека, исключая первый элемент этого Стека, сдвигающий все остальные значения на более низкий индекс.

shift(): Stack<T>

Обсуждение

Это отличается от Array#shift тем, что возвращает новый Стек, а не удалённое значение. Используйте first() или peek() для получения первого значения в этом Стеке.

Примечание: shift может быть использован в withMutations.

push()

Псевдоним для Stack#unshift и не эквивалентен List#push.

push(...values: Array<T>): Stack<T>

pushAll()

Псевдоним для Stack#unshiftAll.

pushAll(iter: Iterable<T>): Stack<T>

pop()

Псевдоним для Stack#shift и не эквивалентен List#pop.

pop(): Stack<T>

update()

Это может быть очень полезно как способ "цепочки" обычной функции в последовательность методов. RxJS называет это "let", а lodash — "thru".

update<R>(updater: (value: this) => R): R

Унаследовано от

Collection#update()

Обсуждение

Например, чтобы суммировать Seq после отображения и фильтрации:

const { Seq } = require('immutable')

function sum(collection) {
  return collection.reduce((sum, x) => sum + x, 0)
}
Seq([ 1, 2, 3 ])
  .map(x => x + 1)
  .filter(x => x % 2 === 0)
  .update(sum)
// 6run it

Временные изменения

withMutations()

Примечание: не все методы могут быть использованы с изменяемой коллекцией или в withMutations! Проверьте документацию каждого метода, чтобы узнать, можно ли его использовать в withMutations.

withMutations(mutator: (mutable: this) => unknown): this

см.

Map#withMutations

asMutable()

Примечание: не все методы могут быть использованы с изменяемой коллекцией или в withMutations! Проверьте документацию каждого метода, чтобы узнать, можно ли его использовать в withMutations.

asMutable(): this

см.

Map#asMutable

wasAltered()

wasAltered(): boolean

см.

Map#wasAltered

asImmutable()

asImmutable(): this

см.

Map#asImmutable

Алгоритмы последовательностей

concat()

Возвращает новый Стек с другими коллекциями, конкатенированными с этим.

concat<C>(...valuesOrCollections: Array<Iterable<C> | C>): Stack<T | C>

Переопределяет

Collection.Indexed#concat()

map()

Возвращает новый Стек со значениями, пропущенными через функцию mapper.

map<M>(mapper: (value: T, key: number, iter: this) => M,context?: unknown): Stack<M>

Переопределяет

Collection.Indexed#map()

Пример

Stack([ 1, 2 ]).map(x => 10 * x)
// Stack [ 10, 20 ]

Примечание: map() всегда возвращает новую инстанцию, даже если в каждом шаге получалось то же самое значение.

flatMap()

Плоско отображает Стек, возвращая новый Стек.

flatMap<M>(mapper: (value: T, key: number, iter: this) => Iterable<M>,context?: unknown): Stack<M>

Переопределяет

Collection.Indexed#flatMap()

Обсуждение

Аналогично stack.map(...).flatten(true).

filter()

filter<F>(predicate: (value: T, index: number, iter: this) => boolean,context?: unknown): Set<F>
filter(predicate: (value: T, index: number, iter: this) => unknown,context?: unknown): this

Переопределяет

Collection.Indexed#filter()

zip()

zip<U>(other: Collection<unknown, U>): Stack<[T, U]>
zip<U, V>(other: Collection<unknown, U>,other2: Collection<unknown, V>): Stack<[T, U, V]>
zip(...collections: Array<Collection<unknown, unknown>>): Stack<unknown>

Переопределяет

Collection.Indexed#zip()

zipAll()

zipAll<U>(other: Collection<unknown, U>): Stack<[T, U]>
zipAll<U, V>(other: Collection<unknown, U>,other2: Collection<unknown, V>): Stack<[T, U, V]>
zipAll(...collections: Array<Collection<unknown, unknown>>): Stack<unknown>

Переопределяет

Collection.Indexed#zipAll()

zipWith()

zipWith<U, Z>(zipper: (value: T, otherValue: U) => Z,otherCollection: Collection<unknown, U>): Stack<Z>
zipWith<U, V, Z>(zipper: (value: T, otherValue: U, thirdValue: V) => Z,otherCollection: Collection<unknown, U>,thirdCollection: Collection<unknown, V>): Stack<Z>
zipWith<Z>(zipper: (...values: Array<unknown>) => Z,...collections: Array<Collection<unknown, unknown>>): Stack<Z>

Переопределяет

Collection.Indexed#zipWith()

partition()

partition<F, C>(predicate: (this: C, value: T, index: number, iter: this) => boolean,context?: C): [Collection.Indexed<T>, Collection.Indexed<F>]
partition<C>(predicate: (this: C, value: T, index: number, iter: this) => unknown,context?: C): [this, this]

Унаследовано от

Collection.Indexed#partition()

[Symbol.iterator]()

[Symbol.iterator](): IterableIterator<T>

Унаследовано от

Collection.Indexed#[Symbol.iterator]()

filterNot()

Возвращает новую коллекцию того же типа с записями только для тех элементов, для которых функция predicate возвращает false.

filterNot(predicate: (value: T, key: number, iter: this) => boolean,context?: unknown): this

Унаследовано от

Collection#filterNot()

Обсуждение

const { Map } = require('immutable')
Map({ a: 1, b: 2, c: 3, d: 4}).filterNot(x => x % 2 === 0)
// Map { "a": 1, "c": 3 }run it

Примечание: filterNot() всегда возвращает новый экземпляр, даже если никаких значений не отфильтровалось.

reverse()

Возвращает новую коллекцию того же типа в обратном порядке.

reverse(): this

Унаследовано от

Collection#reverse()

sort()

Возвращает новую коллекцию того же типа, содержащую те же записи, но упорядоченную по возрастанию с использованием comparator.

sort(comparator?: (valueA: T, valueB: T) => number): this

Унаследовано от

Collection#sort()

Обсуждение

Если comparator не задано, по умолчанию используется компаратор, использующий < и >.

comparator(valueA, valueB):

  • Возвращает 0 если элементы не должны меняться местами.
  • Возвращает -1 (или любое отрицательное число) если valueA идёт перед valueB
  • Возвращает 1 (или любое положительное число) если valueA идёт после valueB
  • Чистая функция, т.е. она всегда должна возвращать то же значение для одной и той же пары значений.

При сортировке коллекций, для которых не определён порядок, будут возвращены их упорядоченные эквиваленты. Например, map.sort() возвращает OrderedMap.

const { Map } = require('immutable')
Map({ "c": 3, "a": 1, "b": 2 }).sort((a, b) => {
  if (a < b) { return -1; }
  if (a > b) { return 1; }
  if (a === b) { return 0; }
});
// OrderedMap { "a": 1, "b": 2, "c": 3 }run it

Примечание: sort() всегда возвращает новый экземпляр, даже если исходный уже был отсортирован.

Примечание: Это всегда операция eager.

sortBy()

Как и sort, но также принимает comparatorValueMapper, что позволяет сортировать более сложными способами:

sortBy<C>(comparatorValueMapper: (value: T, key: number, iter: this) => C,comparator?: (valueA: C, valueB: C) => number): this

Унаследовано от

Collection#sortBy()

Обсуждение

const { Map } = require('immutable')
const beattles = Map({
  John: { name: "Lennon" },
  Paul: { name: "McCartney" },
  George: { name: "Harrison" },
  Ringo: { name: "Starr" },
});
beattles.sortBy(member => member.name);run it

Примечание: sortBy() Всегда возвращает новую экземпляр, даже если исходный уже отсортирован.

Примечание: Это всегда операция с немедленным выполнением.

groupBy()

Возвращает Collection.Keyed из Collection.Keyeds, сгруппированных по результату выполнения функции grouper.

groupBy<G>(grouper: (value: T, key: number, iter: this) => G,context?: unknown): Seq.Keyed<G, Collection<number, T>>

Унаследовано от

Collection#groupBy()

Обсуждение

Примечание: Это всегда операция с немедленным выполнением.

const { List, Map } = require('immutable')
const listOfMaps = List([
  Map({ v: 0 }),
  Map({ v: 1 }),
  Map({ v: 1 }),
  Map({ v: 0 }),
  Map({ v: 2 })
])
const groupsOfMaps = listOfMaps.groupBy(x => x.get('v'))
// Map {
//   0: List [ Map{ "v": 0 }, Map { "v": 0 } ],
//   1: List [ Map{ "v": 1 }, Map { "v": 1 } ],
//   2: List [ Map{ "v": 2 } ],
// }run it

Преобразование в типы JavaScript

toJS()

Глубоко преобразует это индексированное множество в эквивалентный массив JavaScript.

toJS(): Array<DeepCopy<T>>

Унаследовано от

Collection.Indexed#toJS()

toJSON()

Поверхностно преобразует это индексированное множество в эквивалентный массив JavaScript.

toJSON(): Array<T>

Унаследовано от

Collection.Indexed#toJSON()

toArray()

Поверхностно преобразует это множество в массив.

toArray(): Array<T>

Унаследовано от

Collection.Indexed#toArray()

toObject()

Поверхностно преобразует это множество в объект.

toObject(): {[key: string]: T}

Унаследовано от

Collection#toObject()

Обсуждение

Преобразует ключи в строки.

Преобразование в Seq

toSeq()

Возвращает Seq.Indexed.

toSeq(): Seq.Indexed<T>

Унаследовано от

Collection.Indexed#toSeq()

fromEntrySeq()

Если это множество пар [ключ, значение], оно вернёт Seq.Keyed этих пар.

fromEntrySeq(): Seq.Keyed<unknown, unknown>

Унаследовано от

Collection.Indexed#fromEntrySeq()

toKeyedSeq()

Возвращает Seq.Keyed из этого множества, где индексы рассматриваются как ключи.

toKeyedSeq(): Seq.Keyed<number, T>

Унаследовано от

Collection#toKeyedSeq()

Обсуждение

Это полезно, если вы хотите работать с Collection.Indexed и сохранить пары [индекс, значение].

Возвращаемый Seq будет иметь идентичный порядок итерации, как и это множество.

const { Seq } = require('immutable')
const indexedSeq = Seq([ 'A', 'B', 'C' ])
// Seq [ "A", "B", "C" ]
indexedSeq.filter(v => v === 'B')
// Seq [ "B" ]
const keyedSeq = indexedSeq.toKeyedSeq()
// Seq { 0: "A", 1: "B", 2: "C" }
keyedSeq.filter(v => v === 'B')
// Seq { 1: "B" }run it

toIndexedSeq()

Возвращает Seq.Indexed значений этого множества, отбрасывая ключи.

toIndexedSeq(): Seq.Indexed<T>

Унаследовано от

Collection#toIndexedSeq()

toSetSeq()

Возвращает Seq.Set значений этого множества, отбрасывая ключи.

toSetSeq(): Seq.Set<T>

Унаследовано от

Collection#toSetSeq()

Комбинирование

interpose()

Возвращает множество того же типа с separator между каждым элементом в этом множестве.

interpose(separator: T): this

Унаследовано от

Collection.Indexed#interpose()

interleave()

Возвращает множество того же типа с предоставленным collections, перемешанным в это множество.

interleave(...collections: Array<Collection<unknown, T>>): this

Унаследовано от

Collection.Indexed#interleave()

Обсуждение

Полученное множество включает первый элемент из каждого, затем второй из каждого и т.д.

const { List } = require('immutable')
List([ 1, 2, 3 ]).interleave(List([ 'A', 'B', 'C' ]))
// List [ 1, "A", 2, "B", 3, "C" ]run it

Наиболее короткое множество останавливает перемешивание.

List([ 1, 2, 3 ]).interleave(
  List([ 'A', 'B' ]),
  List([ 'X', 'Y', 'Z' ])
)
// List [ 1, "A", "X", 2, "B", "Y" ]run it

Поскольку interleave() повторно индексирует значения, он создает полную копию, которая имеет O(N) сложность.

Примечание: interleave не может быть использовано в withMutations.

splice()

splice возвращает новое индексированное множество, заменяя область этого множества новыми значениями. Если значения не предоставлены, оно только пропускает область, подлежащую удалению.

splice(index: number, removeNum: number, ...values: Array<T>): this

Унаследовано от

Collection.Indexed#splice()

Обсуждение

index может быть отрицательным числом, которое индексирует назад с конца множества. s.splice(-2) вставляет после предпоследнего элемента.

const { List } = require('immutable')
List([ 'a', 'b', 'c', 'd' ]).splice(1, 2, 'q', 'r', 's')
// List [ "a", "q", "r", "s", "d" ]run it

Поскольку splice() повторно индексирует значения, он создаёт полную копию, что имеет O(N) сложность.

Примечание: splice не может быть использовано в withMutations.

flatten()

flatten(depth?: number): Collection<unknown, unknown>
flatten(shallow?: boolean): Collection<unknown, unknown>

Унаследовано от

Collection#flatten()

Поиск значения

indexOf()

Возвращает первый индекс, в котором заданное значение можно найти в множестве, или -1, если его нет.

indexOf(searchValue: T): number

Унаследовано от

Collection.Indexed#indexOf()

lastIndexOf()

Возвращает последний индекс, в котором заданное значение можно найти в множестве, или -1, если его нет.

lastIndexOf(searchValue: T): number

Унаследовано от

Collection.Indexed#lastIndexOf()

findIndex()

Возвращает первый индекс в множестве, где значение удовлетворяет предоставленной предикатной функции. В противном случае возвращается -1.

findIndex(predicate: (value: T, index: number, iter: this) => boolean,context?: unknown): number

Унаследовано от

Collection.Indexed#findIndex()

findLastIndex()

Возвращает последний индекс в множестве, где значение удовлетворяет предоставленной предикатной функции. В противном случае возвращается -1.

findLastIndex(predicate: (value: T, index: number, iter: this) => boolean,context?: unknown): number

Унаследовано от

Collection.Indexed#findLastIndex()

find()

Возвращает первое значение, для которого predicate возвращает true.

find(predicate: (value: T, key: number, iter: this) => boolean,context?: unknown,notSetValue?: T): T | undefined

Унаследовано от

Collection#find()

findLast()

Возвращает последнее значение, для которого predicate возвращает true.

findLast(predicate: (value: T, key: number, iter: this) => boolean,context?: unknown,notSetValue?: T): T | undefined

Унаследовано от

Collection#findLast()

Обсуждение

Примечание: predicate будет вызываться для каждой записи в обратном порядке.

findEntry()

Возвращает первую пару [ключ, значение], для которой predicate возвращает true.

findEntry(predicate: (value: T, key: number, iter: this) => boolean,context?: unknown,notSetValue?: T): [number, T] | undefined

Унаследовано от

Collection#findEntry()

findLastEntry()

Возвращает последнюю пару [ключ, значение], для которой predicate возвращает true.

findLastEntry(predicate: (value: T, key: number, iter: this) => boolean,context?: unknown,notSetValue?: T): [number, T] | undefined

Унаследовано от

Collection#findLastEntry()

Обсуждение

Примечание: predicate будет вызываться для каждой записи в обратном порядке.

findKey()

Возвращает ключ, для которого predicate возвращает true.

findKey(predicate: (value: T, key: number, iter: this) => boolean,context?: unknown): number | undefined

Унаследовано от

Collection#findKey()

findLastKey()

Возвращает последний ключ, для которого predicate возвращает true.

findLastKey(predicate: (value: T, key: number, iter: this) => boolean,context?: unknown): number | undefined

Унаследовано от

Collection#findLastKey()

Обсуждение

Примечание: predicate будет вызываться для каждой записи в обратном порядке.

keyOf()

Возвращает ключ, связанный со значением поиска, или undefined.

keyOf(searchValue: T): number | undefined

Унаследовано от

Collection#keyOf()

lastKeyOf()

Возвращает последний ключ, связанный со значением поиска, или undefined.

lastKeyOf(searchValue: T): number | undefined

Унаследовано от

Collection#lastKeyOf()

max()

Возвращает максимальное значение в этом множестве. Если какие-либо значения сравнительно эквивалентны, будет возвращено первое найденное значение.

max(comparator?: (valueA: T, valueB: T) => number): T | undefined

Унаследовано от

Collection#max()

Обсуждение

comparator используется так же, как и Collection#sort. Если она не предоставлена, по умолчанию используется компаратор >.

Когда два значения считаются эквивалентными, будет возвращено первое из встреченных. В противном случае, max будет работать независимо от порядка входных данных, пока компаратор является коммутативным. По умолчанию компаратор > является коммутативным только при отсутствии различий в типах.

Если comparator возвращает 0 и какое-либо из значений является NaN, undefined или null, будет возвращено это значение.

maxBy()

Как max, но также принимает comparatorValueMapper, что позволяет сравнивать более сложными способами:

maxBy<C>(comparatorValueMapper: (value: T, key: number, iter: this) => C,comparator?: (valueA: C, valueB: C) => number): T | undefined

Унаследовано от

Collection#maxBy()

Обсуждение

const { List, } = require('immutable');
const l = List([
  { name: 'Bob', avgHit: 1 },
  { name: 'Max', avgHit: 3 },
  { name: 'Lili', avgHit: 2 } ,
]);
l.maxBy(i => i.avgHit); // will output { name: 'Max', avgHit: 3 }run it

min()

Возвращает минимальное значение в этом множестве. Если какие-либо значения сравнительно эквивалентны, будет возвращено первое найденное значение.

min(comparator?: (valueA: T, valueB: T) => number): T | undefined

Унаследовано от

Collection#min()

Обсуждение

comparator используется так же, как и Collection#sort. Если она не предоставлена, по умолчанию используется компаратор <.

Когда два значения считаются эквивалентными, будет возвращено первое из встреченных. В противном случае, min будет работать независимо от порядка входных данных, пока компаратор является коммутативным. По умолчанию компаратор < является коммутативным только при отсутствии различий в типах.

Если comparator возвращает 0 и какое-либо из значений является NaN, undefined или null, будет возвращено это значение.

minBy()

Как и min, но также принимает comparatorValueMapper, что позволяет сравнивать более сложными способами:

minBy<C>(comparatorValueMapper: (value: T, key: number, iter: this) => C,comparator?: (valueA: C, valueB: C) => number): T | undefined

Унаследовано от

Collection#minBy()

Обсуждение

const { List, } = require('immutable');
const l = List([
  { name: 'Bob', avgHit: 1 },
  { name: 'Max', avgHit: 3 },
  { name: 'Lili', avgHit: 2 } ,
]);
l.minBy(i => i.avgHit); // will output { name: 'Bob', avgHit: 1 }run it

Равенство значений

equals()

Истинно, если у этой и другой коллекции есть равенство значений, как определено в Immutable.is().

equals(other: unknown): boolean

Унаследовано от

Collection#equals()

Обсуждение

Примечание: Это эквивалентно Immutable.is(this, other), но предоставлено для возможности цепочек выражений.

hashCode()

Вычисляет и возвращает хэшированную идентичность для этой коллекции.

hashCode(): number

Унаследовано от

Collection#hashCode()

Обсуждение

Хеш-код коллекции используется для определения потенциального равенства и используется при добавлении в Set или в качестве ключа в Map, позволяя искать по другому экземпляру.

const a = List([ 1, 2, 3 ]);
const b = List([ 1, 2, 3 ]);
assert.notStrictEqual(a, b); // different instances
const set = Set([ a ]);
assert.equal(set.has(b), true);run it

Если два значения имеют одинаковый хеш-код, они не гарантированно равны. Если два значения имеют разные хеш-коды, они не могут быть равны.

Чтение глубоких значений

getIn()

Возвращает значение, найденное по пути ключей или индексов вложенных коллекций.

getIn(searchKeyPath: Iterable<unknown>, notSetValue?: unknown): unknown

Унаследовано от

Collection#getIn()

Обсуждение

const { Map, List } = require('immutable')
const deepData = Map({ x: List([ Map({ y: 123 }) ]) });
deepData.getIn(['x', 0, 'y']) // 123run it

Простые JavaScript объекты или массивы могут быть вложены в Immutable.js коллекцию, и getIn() может получить доступ к этим значениям:

const { Map, List } = require('immutable')
const deepData = Map({ x: [ { y: 123 } ] });
deepData.getIn(['x', 0, 'y']) // 123run it

hasIn()

Истина, если результат следования пути ключей или индексов через вложенные коллекции приводит к установленному значению.

hasIn(searchKeyPath: Iterable<unknown>): boolean

Унаследовано от

Collection#hasIn()

Преобразование в коллекции

toMap()

Преобразует эту коллекцию в Map. Бросает исключение, если ключи не хэшируемы.

toMap(): Map<number, T>

Унаследовано от

Collection#toMap()

Обсуждение

Примечание: Это эквивалентно Map(this.toKeyedSeq()), но предоставлено для удобства и для возможности цепочек выражений.

toOrderedMap()

Преобразует эту коллекцию в Map, сохраняя порядок итерации.

toOrderedMap(): OrderedMap<number, T>

Унаследовано от

Collection#toOrderedMap()

Обсуждение

Примечание: Это эквивалентно OrderedMap(this.toKeyedSeq()), но предоставлено для удобства и для возможности цепочек выражений.

toSet()

Преобразует эту коллекцию в Set, отбрасывая ключи. Бросает исключение, если значения не хэшируемы.

toSet(): Set<T>

Унаследовано от

Collection#toSet()

Обсуждение

Примечание: Это эквивалентно Set(this), но предоставлено для возможности цепочек выражений.

toOrderedSet()

Преобразует эту коллекцию в Set, сохраняя порядок итерации и отбрасывая ключи.

toOrderedSet(): OrderedSet<T>

Унаследовано от

Collection#toOrderedSet()

Обсуждение

Примечание: Это эквивалентно OrderedSet(this.valueSeq()), но предоставлено для удобства и для возможности цепочек выражений.

toList()

Преобразует эту коллекцию в List, отбрасывая ключи.

toList(): List<T>

Унаследовано от

Collection#toList()

Обсуждение

Это аналогично List(collection), но предоставлено для возможности цепочек выражений. Однако, при вызове на Map или других коллекциях с ключами, collection.toList() отбрасывает ключи и создает список только значений, в то время как List(collection) создает список кортежей записей.

const { Map, List } = require('immutable')
var myMap = Map({ a: 'Apple', b: 'Banana' })
List(myMap) // List [ [ "a", "Apple" ], [ "b", "Banana" ] ]
myMap.toList() // List [ "Apple", "Banana" ]run it

toStack()

Преобразует эту коллекцию в стек, отбрасывая ключи. Бросает исключение, если значения не хэшируемы.

toStack(): Stack<T>

Унаследовано от

Collection#toStack()

Обсуждение

Примечание: Это эквивалентно Stack(this), но предоставлено для возможности цепочек выражений.

Итераторы

keys()

Итератор ключей этой Collection.

keys(): IterableIterator<number>

Унаследовано от

Collection#keys()

Обсуждение

Примечание: это вернёт итератор ES6, который не поддерживает алгоритмы последовательностей Immutable.js. Используйте keySeq вместо этого, если это нужно.

values()

Итератор значений этой Collection.

values(): IterableIterator<T>

Унаследовано от

Collection#values()

Обсуждение

Примечание: это вернёт итератор ES6, который не поддерживает алгоритмы последовательностей Immutable.js. Используйте valueSeq вместо этого, если это нужно.

entries()

Итератор записей этой Collection в виде [ key, value ] кортежей.

entries(): IterableIterator<[number, T]>

Унаследовано от

Collection#entries()

Обсуждение

Примечание: это вернёт итератор ES6, который не поддерживает алгоритмы последовательностей Immutable.js. Используйте entrySeq вместо этого, если это нужно.

Коллекции (Seq)

keySeq()

Возвращает новую Seq.Indexed ключей этой коллекции, отбрасывая значения.

keySeq(): Seq.Indexed<number>

Унаследовано от

Collection#keySeq()

valueSeq()

Возвращает Seq.Indexed значений этой коллекции, отбрасывая ключи.

valueSeq(): Seq.Indexed<T>

Унаследовано от

Collection#valueSeq()

entrySeq()

Возвращает новую Seq.Indexed кортежей [ключ, значение].

entrySeq(): Seq.Indexed<[number, T]>

Унаследовано от

Collection#entrySeq()

Побочные эффекты

forEach()

sideEffect выполняется для каждой записи в коллекции.

forEach(sideEffect: (value: T, key: number, iter: this) => unknown,context?: unknown): number

Унаследовано от

Collection#forEach()

Обсуждение

В отличие от Array#forEach, если любой вызов sideEffect возвращает false, итерация остановится. Возвращает количество обработанных записей (включая последнюю, которая вернула false).

Создание подмножеств

slice()

Возвращает новую коллекцию того же типа, представляющую часть этой коллекции от начала до, но не включая, конец.

slice(begin?: number, end?: number): this

Унаследовано от

Collection#slice()

Обсуждение

Если begin отрицательный, он отсчитывается от конца коллекции. Например, slice(-2) возвращает коллекцию из двух последних записей. Если не указано, новая коллекция начнётся с начала этой коллекции.

Если end отрицательный, он отсчитывается от конца коллекции. Например, slice(0, -1) возвращает коллекцию, за исключением последней записи. Если не указано, новая коллекция продолжит до конца этой коллекции.

Если запрашиваемый срез эквивалентен текущей коллекции, то возвращается она сама.

rest()

Возвращает новую коллекцию того же типа, содержащую все записи, кроме первой.

rest(): this

Унаследовано от

Collection#rest()

butLast()

Возвращает новую коллекцию того же типа, содержащую все записи, кроме последней.

butLast(): this

Унаследовано от

Collection#butLast()

skip()

Возвращает новую коллекцию того же типа, исключающую первые amount записи из этой коллекции.

skip(amount: number): this

Унаследовано от

Collection#skip()

skipLast()

Возвращает новую коллекцию того же типа, исключающую последние amount записи из этой коллекции.

skipLast(amount: number): this

Унаследовано от

Collection#skipLast()

skipWhile()

Возвращает новую коллекцию того же типа, включающую записи, начиная с момента, когда predicate впервые вернёт false.

skipWhile(predicate: (value: T, key: number, iter: this) => boolean,context?: unknown): this

Унаследовано от

Collection#skipWhile()

Обсуждение

const { List } = require('immutable')
List([ 'dog', 'frog', 'cat', 'hat', 'god' ])
  .skipWhile(x => x.match(/g/))
// List [ "cat", "hat", "god" ]run it

skipUntil()

Возвращает новую коллекцию того же типа, включающую записи, начиная с момента, когда predicate впервые вернёт true.

skipUntil(predicate: (value: T, key: number, iter: this) => boolean,context?: unknown): this

Унаследовано от

Collection#skipUntil()

Обсуждение

const { List } = require('immutable')
List([ 'dog', 'frog', 'cat', 'hat', 'god' ])
  .skipUntil(x => x.match(/hat/))
// List [ "hat", "god" ]run it

take()

Возвращает новую коллекцию того же типа, включающую первые amount записи из этой коллекции.

take(amount: number): this

Унаследовано от

Collection#take()

takeLast()

Возвращает новую коллекцию того же типа, включающую последние amount записи из этой коллекции.

takeLast(amount: number): this

Унаследовано от

Collection#takeLast()

takeWhile()

Возвращает новую коллекцию того же типа, включающую записи из этой коллекции, пока predicate возвращает true.

takeWhile(predicate: (value: T, key: number, iter: this) => boolean,context?: unknown): this

Унаследовано от

Collection#takeWhile()

Обсуждение

const { List } = require('immutable')
List([ 'dog', 'frog', 'cat', 'hat', 'god' ])
  .takeWhile(x => x.match(/o/))
// List [ "dog", "frog" ]run it

takeUntil()

Возвращает новую коллекцию того же типа, которая включает записи из этой коллекции, пока predicate возвращает false.

takeUntil(predicate: (value: T, key: number, iter: this) => boolean,context?: unknown): this

Унаследовано от

Collection#takeUntil()

Обсуждение

const { List } = require('immutable')
List([ 'dog', 'frog', 'cat', 'hat', 'god' ])
  .takeUntil(x => x.match(/at/))
// List [ "dog", "frog" ]run it

Сокращение значения

reduce()

reduce<R>(reducer: (reduction: R, value: T, key: number, iter: this) => R,initialReduction: R,context?: unknown): R
reduce<R>(reducer: (reduction: T | R, value: T, key: number, iter: this) => R): R

Унаследовано от

Collection#reduce()

reduceRight()

reduceRight<R>(reducer: (reduction: R, value: T, key: number, iter: this) => R,initialReduction: R,context?: unknown): R
reduceRight<R>(reducer: (reduction: T | R, value: T, key: number, iter: this) => R): R

Унаследовано от

Collection#reduceRight()

every()

True, если predicate возвращает true для всех записей в коллекции.

every(predicate: (value: T, key: number, iter: this) => boolean,context?: unknown): boolean

Унаследовано от

Collection#every()

some()

True, если predicate возвращает true для любой записи в коллекции.

some(predicate: (value: T, key: number, iter: this) => boolean,context?: unknown): boolean

Унаследовано от

Collection#some()

join()

Объединяет значения в строку, вставляя разделитель между каждым. По умолчанию разделитель - ",".

join(separator?: string): string

Унаследовано от

Collection#join()

isEmpty()

Возвращает true, если эта коллекция не содержит значений.

isEmpty(): boolean

Унаследовано от

Collection#isEmpty()

Обсуждение

Для некоторых ленивых Seq, isEmpty может потребоваться выполнить итерацию, чтобы определить пустоту. Будет выполнена не более одной итерации.

count()

count(): number
count(predicate: (value: T, key: number, iter: this) => boolean,context?: unknown): number

Унаследовано от

Collection#count()

countBy()

Возвращает Seq.Keyed подсчетов, сгруппированных по возвращаемому значению функции grouper.

countBy<G>(grouper: (value: T, key: number, iter: this) => G,context?: unknown): Map<G, number>

Унаследовано от

Collection#countBy()

Обсуждение

Примечание: это не ленивая операция.

Сравнение

isSubset()

True, если iter включает все значения в этой коллекции.

isSubset(iter: Iterable<T>): boolean

Унаследовано от

Collection#isSubset()

isSuperset()

True, если эта коллекция включает все значения в iter.

isSuperset(iter: Iterable<T>): boolean

Унаследовано от

Collection#isSuperset()
Эта документация сгенерирована из immutable.d.ts. Приветствуются pull request и вопросы.

© 2014–present, Lee Byron and other contributors
Licensed under the 3-clause BSD License.
https://immutable-js.com/docs/v4.2.1/Stack/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API