Spec-Zone.ru › Immutable.js

Map

Неизменяемая Map — это неупорядоченная коллекция пар (ключ, значение) с O(log32 N) получением и O(log32 N) постоянными множествами.

type Map<K, V> extends Collection.Keyed<K, V>

Обсуждение

Порядок итерации в Map не определен, но стабилен. Несколько итераций одной и той же Map будут выполняться в одном и том же порядке.

Ключи Map могут быть любого типа и использовать Immutable.is для определения равенства ключей. Это позволяет использовать любое значение (включая NaN) в качестве ключа.

Поскольку Immutable.is возвращает равенство на основе семантики значений, и неизменяемые коллекции рассматриваются как значения, любая неизменяемая коллекция может использоваться в качестве ключа.

const { Map, List } = require('immutable');
Map().set(List([ 1 ]), 'listofone').get(List([ 1 ]));
// 'listofone'run it

Любой JavaScript-объект может использоваться в качестве ключа, однако для оценки равенства ключей используется строгое равенство. Два похожих объекта будут представлять два разных ключа.

Реализовано с помощью хэш-массива, сопоставленного с деревом.

Создание

Map()

Map<K, V>(collection?: Iterable<[K, V]>): Map<K, V>
Map<V>(obj: {[key: string]: V}): Map<string, V>
Map<K, V>(obj: {[key: string]: V}): Map<K, V>

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

Map.isMap()

Map.isMap(maybeMap: unknown): boolean

Члены

размер

Количество элементов в этой Map.

size: number

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

set()

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

set(key: K, value: V): this

Обсуждение

const { Map } = require('immutable')
const originalMap = Map()
const newerMap = originalMap.set('key', 'value')
const newestMap = newerMap.set('key', 'newer value')

originalMap
// Map {}
newerMap
// Map { "key": "value" }
newestMap
// Map { "key": "newer value" }run it

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

delete()

Возвращает новую Map, из которой исключён этот key.

delete(key: K): this

псевдоним

remove()

Обсуждение

Примечание: delete не может безопасно использоваться в IE8, но предоставляется для соответствия API коллекций ES6.

const { Map } = require('immutable')
const originalMap = Map({
  key: 'value',
  otherKey: 'other value'
})
// Map { "key": "value", "otherKey": "other value" }
originalMap.delete('otherKey')
// Map { "key": "value" }run it

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

deleteAll()

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

deleteAll(keys: Iterable<K>): this

псевдоним

removeAll()

Обсуждение

const { Map } = require('immutable')
const names = Map({ a: "Aaron", b: "Barry", c: "Connor" })
names.deleteAll([ 'a', 'c' ])
// Map { "b": "Barry" }run it

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

clear()

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

clear(): this

Обсуждение

const { Map } = require('immutable')
Map({ key: 'value' }).clear()
// Map {}run it

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

update()

update(key: K, notSetValue: V, updater: (value: V) => V): this
update(key: K, updater: (value: V | undefined) => V): this
update<R>(updater: (value: this) => R): R

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

Collection#update()

merge()

merge<KC, VC>(...collections: Array<Iterable<[KC, VC]>>): Map<K | KC, V | VC>
merge<C>(...collections: Array<{[key: string]: C}>): Map<K | string, V | C>

mergeWith()

Как и merge(), mergeWith() возвращает новую Map, полученную в результате слияния предоставленных коллекций (или JS-объектов) в эту Map, но использует функцию merger для обработки конфликтов.

mergeWith(merger: (oldVal: V, newVal: V, key: K) => V,...collections: Array<Iterable<[K, V]> | {[key: string]: V}>): this

Обсуждение

const { Map } = require('immutable')
const one = Map({ a: 10, b: 20, c: 30 })
const two = Map({ b: 40, a: 50, d: 60 })
one.mergeWith((oldVal, newVal) => oldVal / newVal, two)
// { "a": 0.2, "b": 0.5, "c": 30, "d": 60 }
two.mergeWith((oldVal, newVal) => oldVal / newVal, one)
// { "b": 2, "a": 5, "d": 60, "c": 30 }run it

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

mergeDeep()

Как merge(), но когда встречаются две совместимые коллекции с одинаковым ключом, они также объединяются, рекурсивно проходя по вложенным данным. Две коллекции считаются совместимыми (и, следовательно, будут объединены), если они обе относятся к одной из трёх категорий: с ключами (например, Mapы, Recordы и объекты), индексированные (например, Listы и массивы) или множества (например, Setы). Если они попадают в разные категории, mergeDeep заменит существующую коллекцию коллекцией, которая объединяется. Это поведение можно настроить, используя mergeDeepWith().

mergeDeep(...collections: Array<Iterable<[K, V]> | {[key: string]: V}>): this

Обсуждение

Примечание: Индексированные и множественные коллекции объединяются с использованием concat()/union() и поэтому не рекурсируют.

const { Map } = require('immutable')
const one = Map({ a: Map({ x: 10, y: 10 }), b: Map({ x: 20, y: 50 }) })
const two = Map({ a: Map({ x: 2 }), b: Map({ y: 5 }), c: Map({ z: 3 }) })
one.mergeDeep(two)
// Map {
//   "a": Map { "x": 2, "y": 10 },
//   "b": Map { "x": 20, "y": 5 },
//   "c": Map { "z": 3 }
// }run it

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

mergeDeepWith()

Как mergeDeep(), но когда встречаются два не-коллекции или несовместимые коллекции с одним и тем же ключом, она использует функцию merger для определения результирующего значения. Коллекции считаются несовместимыми, если они попадают в разные категории между с ключами, индексированными и множественными.

mergeDeepWith(merger: (oldVal: unknown, newVal: unknown, key: unknown) => unknown,...collections: Array<Iterable<[K, V]> | {[key: string]: V}>): this

Обсуждение

const { Map } = require('immutable')
const one = Map({ a: Map({ x: 10, y: 10 }), b: Map({ x: 20, y: 50 }) })
const two = Map({ a: Map({ x: 2 }), b: Map({ y: 5 }), c: Map({ z: 3 }) })
one.mergeDeepWith((oldVal, newVal) => oldVal / newVal, two)
// Map {
//   "a": Map { "x": 5, "y": 10 },
//   "b": Map { "x": 20, "y": 10 },
//   "c": Map { "z": 3 }
// }run it

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

Глубокие постоянные изменения

setIn()

Возвращает новую Map, установив value в этой keyPath. Если какие-либо ключи в keyPath не существуют, в этом ключе будет создана новая неизменяемая Map.

setIn(keyPath: Iterable<unknown>, value: unknown): this

Обсуждение

const { Map } = require('immutable')
const originalMap = Map({
  subObject: Map({
    subKey: 'subvalue',
    subSubObject: Map({
      subSubKey: 'subSubValue'
    })
  })
})

const newMap = originalMap.setIn(['subObject', 'subKey'], 'ha ha!') // Map { // "subObject": Map { // "subKey": "ha ha!", // "subSubObject": Map { "subSubKey": "subSubValue" } // } // } const newerMap = originalMap.setIn( ['subObject', 'subSubObject', 'subSubKey'], 'ha ha ha!' ) // Map { // "subObject": Map { // "subKey": "subvalue", // "subSubObject": Map { "subSubKey": "ha ha ha!" } // } // }Запустить

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

const { Map } = require('immutable')
const originalMap = Map({
  subObject: {
    subKey: 'subvalue',
    subSubObject: {
      subSubKey: 'subSubValue'
    }
  }
})

originalMap.setIn(['subObject', 'subKey'], 'ha ha!') // Map { // "subObject": { // subKey: "ha ha!", // subSubObject: { subSubKey: "subSubValue" } // } // }Запустить

Если какой-либо ключ в пути существует, но не может быть обновлён (такой как примитив, например, число, или пользовательский объект, например, Date), будет выброшено исключение.

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

deleteIn()

Возвращает новую Map, удалив значение по этому keyPath. Если какие-либо ключи в keyPath не существуют, изменений не произойдёт.

deleteIn(keyPath: Iterable<unknown>): this

псевдоним

removeIn()

Обсуждение

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

updateIn()

updateIn(keyPath: Iterable<unknown>,notSetValue: unknown,updater: (value: unknown) => unknown): this
updateIn(keyPath: Iterable<unknown>, updater: (value: unknown) => unknown): this

mergeIn()

Комбинация updateIn и merge, возвращающая новую Map, но выполняющая слияние в точке, достигнутой путём следования по пути ключа. Другими словами, эти две строки эквивалентны:

mergeIn(keyPath: Iterable<unknown>, ...collections: Array<unknown>): this

Обсуждение

map.updateIn(['a', 'b', 'c'], abc => abc.merge(y))
map.mergeIn(['a', 'b', 'c'], y)

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

mergeDeepIn()

Комбинация updateIn и mergeDeep, возвращающая новую Map, но выполняющая глубокое слияние в точке, достигнутой путём следования по пути ключа. Другими словами, эти две строки эквивалентны:

mergeDeepIn(keyPath: Iterable<unknown>, ...collections: Array<unknown>): this

Обсуждение

map.updateIn(['a', 'b', 'c'], abc => abc.mergeDeep(y))
map.mergeDeepIn(['a', 'b', 'c'], y)

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

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

withMutations()

Каждый раз, когда вы вызываете одну из вышеперечисленных функций, создаётся новая неизменяемая Map. Если чистая функция вызывает несколько из этих функций для получения конечного возвращаемого значения, то была заплачена плата за производительность и память путём создания всех промежуточных неизменяемых Map.

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

Обсуждение

Если вам нужно применить серию мутаций для создания новой неизменяемой Map, withMutations() создаёт временную изменяемую копию Map, которая может применять мутации высокопроизводительным способом. Фактически, именно так выполняются сложные мутации, такие как merge.

Например, это приводит к созданию 2, а не 4, новых Map:

const { Map } = require('immutable')
const map1 = Map()
const map2 = map1.withMutations(map => {
  map.set('a', 1).set('b', 2).set('c', 3)
})
assert.equal(map1.size, 0)
assert.equal(map2.size, 3)run it

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

asMutable()

Ещё один способ избежать создания промежуточных неизменяемых map — создать изменяемую копию этой коллекции. Изменяемые копии всегда возвращают this, и поэтому не должны использоваться для равенства. Ваша функция никогда не должна возвращать изменяемую копию коллекции, используйте её только внутри для создания новой коллекции.

asMutable(): this

см.

Map#asImmutable

Обсуждение

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

Примечание: если коллекция уже изменяемая, asMutable возвращает себя.

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

wasAltered()

Возвращает true, если это изменяемая копия (см. asMutable()) и были применены изменяющие изменения.

wasAltered(): boolean

см.

Map#asMutable

asImmutable()

Противоположность asMutable's yang. Поскольку она применяется к изменяемым коллекциям, эта операция является изменяемой и может вернуть себя (хотя может не вернуть себя, например, если результатом является пустая коллекция). После выполнения исходная изменяемая копия больше не должна изменяться, так как она может быть неизменяемым результатом.

asImmutable(): this

см.

Map#asMutable

Обсуждение

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

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

map()

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

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

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

Collection.Keyed#map()

Пример

Map({ a: 1, b: 2 }).map(x => 10 * x)
// Map { a: 10, b: 20 }

mapKeys()

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

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

Collection.Keyed#mapKeys()

см.

Collection.Keyed.mapKeys

mapEntries()

mapEntries<KM, VM>(mapper: (entry: [K, V], index: number, iter: this) => [KM, VM] | undefined,context?: unknown): Map<KM, VM>

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

Collection.Keyed#mapEntries()

см.

Collection.Keyed.mapEntries

flatMap()

Применяет flat-map к Map, возвращая новую Map.

flatMap<KM, VM>(mapper: (value: V, key: K, iter: this) => Iterable<[KM, VM]>,context?: unknown): Map<KM, VM>

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

Collection.Keyed#flatMap()

Обсуждение

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

filter()

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

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

Collection.Keyed#filter()

partition()

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

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

Collection.Keyed#partition()

flip()

flip(): Map<V, K>

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

Collection.Keyed#flip()

см.

Collection.Keyed.flip

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

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

toJS()

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

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

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

Collection.Keyed#toJS()

Обсуждение

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

toJSON()

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

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

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

Collection.Keyed#toJSON()

Обсуждение

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

toArray()

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

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

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

Collection.Keyed#toArray()

toObject()

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

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

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

Collection#toObject()

Обсуждение

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

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

toSeq()

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

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

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

Collection.Keyed#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()

Функции последовательностей

concat()

concat<KC, VC>(...collections: Array<Iterable<[KC, VC]>>): Collection.Keyed<K | KC, V | VC>
concat<C>(...collections: Array<{[key: string]: C}>): Collection.Keyed<K | string, V | C>

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

Collection.Keyed#concat()

[Symbol.iterator]()

[Symbol.iterator](): IterableIterator<[K, V]>

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

Collection.Keyed#[Symbol.iterator]()

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

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 пуста, возвращает необязательное значение по умолчанию, если оно предоставлено; если значение по умолчанию не предоставлено, возвращает undefined.

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

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

Collection#first()

last()

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

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

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

toMap()

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

toMap(): Map<K, V>

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

Collection#toMap()

Обсуждение

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

toOrderedMap()

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

toOrderedMap(): OrderedMap<K, V>

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

Collection#toOrderedMap()

Обсуждение

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

toSet()

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

toSet(): Set<V>

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

Collection#toSet()

Обсуждение

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

toOrderedSet()

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

toOrderedSet(): OrderedSet<V>

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

Collection#toOrderedSet()

Обсуждение

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

toList()

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

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), но предоставлено для возможности цепочных выражений.

Итераторы

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 вместо этого, если это нужно.

Коллекции (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

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

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

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/Map/

Spec-Zone.ru

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