Spec-Zone.ru › Immutable.js

Seq

Seq описывает ленивую операцию, позволяющую эффективно объединять использование всех методов высшего порядка для коллекций (например, map и filter), не создавая промежуточных коллекций.

type Seq<K, V> extends Collection<K, V>

Обсуждение

Seq неизменяема — После создания Seq её нельзя изменить, добавить элементы, переупорядочить или каким-либо другим образом модифицировать. Вместо этого любой мутабельный метод, вызванный на Seq, вернёт новую Seq.

Seq ленивая — Seq выполняет минимально необходимое количество работы для ответа на любой вызов метода. Значения часто создаются во время итерации, включая неявную итерацию при уменьшении или преобразовании в конкретную структуру данных, такую как List или JavaScript Array.

Например, следующее не выполняет никакой работы, потому что значения результата Seq никогда не итерируются:

const { Seq } = require('immutable')
const oddSquares = Seq([ 1, 2, 3, 4, 5, 6, 7, 8 ])
  .filter(x => x % 2 !== 0)
  .map(x => x * x)

После использования Seq, выполняется только необходимая работа. В этом примере промежуточные массивы никогда не создаются, filter вызывается трижды, а map только один раз:

oddSquares.get(1); // 9

Любая коллекция может быть преобразована в ленивую Seq с помощью Seq().

const { Map } = require('immutable')
const map = Map({ a: 1, b: 2, c: 3 })
const lazySeq = Seq(map)run it

Seq позволяет эффективно объединять операции, позволяя выразить логику, которая в противном случае может быть очень утомительной:

lazySeq
  .flip()
  .map(key => key.toUpperCase())
  .flip()
// Seq { A: 1, B: 1, C: 1 }

А также выражать логику, которая в противном случае ограничена по памяти или времени, например, Range — это особый вид ленивой последовательности.

const { Range } = require('immutable')
Range(1, Infinity)
  .skip(1000)
  .map(n => -n)
  .filter(n => n % 2 === 0)
  .take(2)
  .reduce((r, n) => r * n, 1)
// 1006008run it

Seq часто используется для предоставления богатого API для коллекций JavaScript Object.

Seq({ x: 0, y: 1, z: 2 }).map(v => v * 2).toObject();
// { x: 0, y: 2, z: 4 }

Создание

Seq()

Seq<S>(seq: S): S
Seq<K, V>(collection: Collection.Keyed<K, V>): Seq.Keyed<K, V>
Seq<T>(collection: Collection.Set<T>): Seq.Set<T>
Seq<T>(collection: Collection.Indexed<T> | Iterable<T> | ArrayLike<T>): Seq.Indexed<T>
Seq<V>(obj: {[key: string]: V}): Seq.Keyed<string, V>
Seq<K, V>(): Seq<K, V>

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

Seq.isSeq()

Seq.isSeq(maybeSeq: unknown): boolean

Члены

size

Некоторые Seq могут описывать свой размер лениво. В этом случае размер будет целым числом. В противном случае он будет неопределённым.

size: number | undefined

Обсуждение

Например, Seq, возвращаемые из map() или reverse() сохраняют размер исходной Seq, в то время как filter() нет.

Примечание: Range, Repeat и Seq созданные из Array и Object всегда будут иметь размер.

Вынужденное вычисление

cacheResult()

Поскольку последовательности ленивые и предназначены для объединения, они не кэшируют свои результаты. Например, эта функция map вызывается в общей сложности 6 раз, поскольку каждая join итерирует Seq из трёх значений.

cacheResult(): this

Обсуждение

var squares = Seq([ 1, 2, 3 ]).map(x => x  x)
squares.join() + squares.join()

Если вы знаете, что Seq будет использоваться несколько раз, может быть эффективнее сначала кэшировать его в памяти. Здесь функция map вызывается только 3 раза.

var squares = Seq([ 1, 2, 3 ]).map(x => x  x).cacheResult()
squares.join() + squares.join()

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

Примечание: после вызова cacheResult, Seq всегда будет иметь size.

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

map()

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

map<M>(mapper: (value: V, key: K, iter: this) => M,context?: unknown): Seq<K, M>
map<M>(mapper: (value: V, key: K, iter: this) => M,context?: unknown): Seq<M, M>

Переопределения

Collection#map()

Пример

const { Seq } = require('immutable')
Seq([ 1, 2 ]).map(x => 10 * x)
// Seq [ 10, 20 ]

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

flatMap()

Выполняет плоское отображение Seq, возвращая Seq того же типа.

flatMap<M>(mapper: (value: V, key: K, iter: this) => Iterable<M>,context?: unknown): Seq<K, M>
flatMap<M>(mapper: (value: V, key: K, iter: this) => Iterable<M>,context?: unknown): Seq<M, M>

Переопределения

Collection#flatMap()

Обсуждение

Аналогично seq.map(...).flatten(true). Примечание: используется только для множеств.

filter()

filter<F>(predicate: (value: V, key: K, iter: this) => boolean,context?: unknown): Seq<K, F>
filter(predicate: (value: V, key: K, iter: this) => unknown,context?: unknown): this

Переопределения

Collection#filter()

partition()

partition<F, C>(predicate: (this: C, value: V, key: K, iter: this) => boolean,context?: C): [Seq<K, V>, Seq<K, F>]
partition<C>(predicate: (this: C, value: V, key: K, iter: this) => unknown,context?: C): [this, this]

Переопределения

Collection#partition()

filterNot()

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

filterNot(predicate: (value: V, key: K, 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: V, valueB: V) => 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() всегда возвращает новый экземпляр, даже если исходный уже отсортирован.

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

sortBy()

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

sortBy<C>(comparatorValueMapper: (value: V, key: K, 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: V, key: K, iter: this) => G,context?: unknown): Seq.Keyed<G, Collection<K, V>>

Наследуется от

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

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

equals()

True, если эта и другая коллекция имеют равенство значений, как определено 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

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

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

get()

get<NSV>(key: K, notSetValue: NSV): V | NSV
get(key: K): V | undefined

Наследуется от

Collection#get()

has()

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

has(key: K): boolean

Наследуется от

Collection#has()

includes()

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

includes(value: V): boolean

Наследуется от

Collection#includes()

псевдоним

contains()

first()

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

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

Наследуется от

Collection#first()

last()

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

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

Наследуется от

Collection#last()

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

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()

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

hasIn(searchKeyPath: Iterable<unknown>): boolean

Наследуется от

Collection#hasIn()

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

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

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

toJS()

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

toJS(): Array<DeepCopy<V>> | {[key: string]: DeepCopy<V>}

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

Collection#toJS()

Обсуждение

Collection.Indexed, и Collection.Set преобразуются в Array, в то время как Collection.Keyed преобразуются в Object, преобразуя ключи в строки.

toJSON()

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

toJSON(): Array<V> | {[key: string]: V}

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

Collection#toJSON()

Обсуждение

Collection.Indexed, и Collection.Set преобразуются в Array, в то время как Collection.Keyed преобразуются в Object, преобразуя ключи в строки.

toArray()

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

toArray(): Array<V> | Array<[K, V]>

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

Collection#toArray()

Обсуждение

Collection.Indexed, и Collection.Set генерируют массив значений. Collection.Keyed генерируют массив пар [ключ, значение].

toObject()

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

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

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

Collection#toObject()

Обсуждение

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

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

toMap()

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

toMap(): Map<K, V>

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

Collection#toMap()

Обсуждение

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

toOrderedMap()

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

toOrderedMap(): OrderedMap<K, V>

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

Collection#toOrderedMap()

Обсуждение

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

toSet()

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

toSet(): Set<V>

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

Collection#toSet()

Обсуждение

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

toOrderedSet()

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

toOrderedSet(): OrderedSet<V>

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

Collection#toOrderedSet()

Обсуждение

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

toList()

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

toList(): List<V>

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

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<V>

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

Collection#toStack()

Обсуждение

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

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

toSeq()

Преобразует эту коллекцию в Seq того же типа (индексированная, с ключами или набор).

toSeq(): Seq<K, V>

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

Collection#toSeq()

toKeyedSeq()

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

toKeyedSeq(): Seq.Keyed<K, V>

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

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<V>

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

Collection#toIndexedSeq()

toSetSeq()

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

toSetSeq(): Seq.Set<V>

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

Collection#toSetSeq()

Итераторы

keys()

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

keys(): IterableIterator<K>

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

Collection#keys()

Обсуждение

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

values()

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

values(): IterableIterator<V>

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

Collection#values()

Обсуждение

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

entries()

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

entries(): IterableIterator<[K, V]>

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

Collection#entries()

Обсуждение

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

[Symbol.iterator]()

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

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

Collection#[Symbol.iterator]()

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

keySeq()

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

keySeq(): Seq.Indexed<K>

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

Collection#keySeq()

valueSeq()

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

valueSeq(): Seq.Indexed<V>

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

Collection#valueSeq()

entrySeq()

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

entrySeq(): Seq.Indexed<[K, V]>

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

Collection#entrySeq()

Воздействие на побочные эффекты

forEach()

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

forEach(sideEffect: (value: V, key: K, 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: V, key: K, 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: V, key: K, 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: V, key: K, 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: V, key: K, 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

Комбинация

concat()

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

concat(...valuesOrCollections: Array<unknown>): Collection<unknown, unknown>

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

Collection#concat()

Обсуждение

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

flatten()

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

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

Collection#flatten()

Сведение значения

reduce()

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

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

Collection#reduce()

reduceRight()

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

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

Collection#reduceRight()

every()

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

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

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

Collection#every()

some()

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

some(predicate: (value: V, key: K, 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: V, key: K, iter: this) => boolean,context?: unknown): number

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

Collection#count()

countBy()

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

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

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

Collection#countBy()

Обсуждение

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

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

find()

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

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

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

Collection#find()

findLast()

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

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

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

Collection#findLast()

Обсуждение

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

findEntry()

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

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

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

Collection#findEntry()

findLastEntry()

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

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

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

Collection#findLastEntry()

Обсуждение

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

findKey()

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

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

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

Collection#findKey()

findLastKey()

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

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

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

Collection#findLastKey()

Обсуждение

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

keyOf()

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

keyOf(searchValue: V): K | undefined

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

Collection#keyOf()

lastKeyOf()

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

lastKeyOf(searchValue: V): K | undefined

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

Collection#lastKeyOf()

max()

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

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

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

Collection#max()

Обсуждение

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

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

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

maxBy()

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

maxBy<C>(comparatorValueMapper: (value: V, key: K, iter: this) => C,comparator?: (valueA: C, valueB: C) => number): V | 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: V, valueB: V) => number): V | undefined

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

Collection#min()

Обсуждение

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

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

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

minBy()

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

minBy<C>(comparatorValueMapper: (value: V, key: K, iter: this) => C,comparator?: (valueA: C, valueB: C) => number): V | 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

Сравнение

isSubset()

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

isSubset(iter: Iterable<V>): boolean

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

Collection#isSubset()

isSuperset()

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

isSuperset(iter: Iterable<V>): boolean

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

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

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

Spec-Zone.ru

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