OrderedMap
Тип Map, гарантирующий, что порядок итерации записей будет соответствовать порядку, в котором они были установлены методом set().
type OrderedMap<K, V> extends Map<K, V>
Обсуждение
Поведение итерации в OrderedMap такое же, как в родном ES6 Map и JavaScript Object.
Обратите внимание, что OrderedMap более ресурсоёмки, чем неупорядоченные Map, и могут потреблять больше памяти. OrderedMap#set имеет амортизированную сложность O(log32 N), но не является устойчивой.
Создание
OrderedMap()
OrderedMap<K, V>(collection?: Iterable<[K, V]>): OrderedMap<K, V>
OrderedMap<V>(obj: {[key: string]: V}): OrderedMap<string, V>
Статические методы
OrderedMap.isOrderedMap()
OrderedMap.isOrderedMap(maybeOrderedMap: unknown): boolean
Члены
Постоянные изменения
set()
Возвращает новый OrderedMap, также содержащий новую пару ключ-значение. Если в этом OrderedMap уже существует эквивалентный ключ, он будет заменён, сохраняя при этом существующий порядок.
set(key: K, value: V): this
Переопределения
Map#set()Обсуждение
const { OrderedMap } = require('immutable')
const originalMap = OrderedMap({a:1, b:1, c:1})
const updatedMap = originalMap.set('b', 2)
originalMap
// OrderedMap {a: 1, b: 1, c: 1}
updatedMap
// OrderedMap {a: 1, b: 2, c: 1}run it
Примечание: set можно использовать в withMutations.
merge()
merge<KC, VC>(...collections: Array<Iterable<[KC, VC]>>): OrderedMap<K | KC, V | VC>
merge<C>(...collections: Array<{[key: string]: C}>): OrderedMap<K | string, V | C>
Переопределения
Map#merge()
delete()
Возвращает новый Map, исключающий эту key.
delete(key: K): this
Унаследовано от
Map#delete()псевдоним
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
Унаследовано от
Map#deleteAll()псевдоним
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
Унаследовано от
Map#clear()Обсуждение
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
Унаследовано от
Map#update()
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
Унаследовано от
Map#mergeWith()Обсуждение
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
Унаследовано от
Map#mergeDeep()Обсуждение
Примечание: Индексированные и множественные коллекции объединяются с использованием 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
Унаследовано от
Map#mergeDeepWith()Обсуждение
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.
Алгоритмы последовательности
map()
Возвращает новый OrderedMap со значениями, прошедшими через функцию mapper.
map<M>(mapper: (value: V, key: K, iter: this) => M,context?: unknown): OrderedMap<K, M>
Переопределения
Map#map()Пример
OrderedMap({ a: 1, b: 2 }).map(x => 10 * x)
// OrderedMap { "a": 10, "b": 20 }
Примечание: map() всегда возвращает новую инстанцию, даже если на каждом шаге было получено одинаковое значение.
mapKeys()
mapKeys<M>(mapper: (key: K, value: V, iter: this) => M,context?: unknown): OrderedMap<M, V>
Переопределения
Map#mapKeys()см.
Collection.Keyed.mapKeys
mapEntries()
mapEntries<KM, VM>(mapper: (entry: [K, V], index: number, iter: this) => [KM, VM] | undefined,context?: unknown): OrderedMap<KM, VM>
Переопределения
Map#mapEntries()см.
Collection.Keyed.mapEntries
flatMap()
Выполняет плоское отображение OrderedMap, возвращая новый OrderedMap.
flatMap<KM, VM>(mapper: (value: V, key: K, iter: this) => Iterable<[KM, VM]>,context?: unknown): OrderedMap<KM, VM>
Переопределения
Map#flatMap()Обсуждение
Аналогично data.map(...).flatten(true).
filter()
filter<F>(predicate: (value: V, key: K, iter: this) => boolean,context?: unknown): OrderedMap<K, F> filter(predicate: (value: V, key: K, iter: this) => unknown,context?: unknown): this
Переопределения
Map#filter()
partition()
partition<F, C>(predicate: (this: C, value: V, key: K, iter: this) => boolean,context?: C): [OrderedMap<K, V>, OrderedMap<K, F>] partition<C>(predicate: (this: C, value: V, key: K, iter: this) => unknown,context?: C): [this, this]
Переопределения
Map#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
Глубокие постоянные изменения
setIn()
Возвращает новую карту, имеющую установленное значение value в этом keyPath. Если какие-либо ключи в keyPath отсутствуют, новая неизменяемая карта будет создана по этому ключу.
setIn(keyPath: Iterable<unknown>, value: unknown): this
Унаследовано от
Map#setIn()Обсуждение
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()
Возвращает новую карту, из которой удалено значение по этому keyPath. Если какие-либо ключи в keyPath отсутствуют, изменений не произойдёт.
deleteIn(keyPath: Iterable<unknown>): this
Унаследовано от
Map#deleteIn()псевдоним
removeIn()Обсуждение
Примечание: deleteIn может использоваться в withMutations.
updateIn()
updateIn(keyPath: Iterable<unknown>,notSetValue: unknown,updater: (value: unknown) => unknown): this updateIn(keyPath: Iterable<unknown>, updater: (value: unknown) => unknown): this
Унаследовано от
Map#updateIn()
mergeIn()
Сочетание updateIn и merge, возвращающее новую карту, но выполняющее слияние в точке, достигнутой путём следования по ключу. Другими словами, эти две строки эквивалентны:
mergeIn(keyPath: Iterable<unknown>, ...collections: Array<unknown>): this
Унаследовано от
Map#mergeIn()Обсуждение
map.updateIn(['a', 'b', 'c'], abc => abc.merge(y)) map.mergeIn(['a', 'b', 'c'], y)
Примечание: mergeIn может использоваться в withMutations.
mergeDeepIn()
Сочетание updateIn и mergeDeep, возвращающее новую карту, но выполняющее глубокое слияние в точке, достигнутой путём следования по ключу. Другими словами, эти две строки эквивалентны:
mergeDeepIn(keyPath: Iterable<unknown>, ...collections: Array<unknown>): this
Унаследовано от
Map#mergeDeepIn()Обсуждение
map.updateIn(['a', 'b', 'c'], abc => abc.mergeDeep(y)) map.mergeDeepIn(['a', 'b', 'c'], y)
Примечание: mergeDeepIn может использоваться в withMutations.
Временные изменения
withMutations()
Каждый раз, когда вы вызываете одну из вышеперечисленных функций, создаётся новая неизменяемая карта. Если чистая функция вызывает несколько из них для получения конечного возвращаемого значения, то на производительности и памяти оказывается штраф, создавая все промежуточные неизменяемые карты.
withMutations(mutator: (mutable: this) => unknown): this
Унаследовано от
Map#withMutations()Обсуждение
Если вам нужно применить серию мутаций для создания новой неизменяемой карты, withMutations() создаёт временную изменяемую копию карты, которая может применять мутации высокопроизводительным способом. Фактически, именно так выполняются сложные мутации, такие как merge.
В качестве примера, это приводит к созданию 2, а не 4, новых карт:
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()
Ещё один способ избежать создания промежуточных неизменяемых карт — создать изменяемую копию этой коллекции. Изменяемые копии всегда возвращают this, и поэтому не должны использоваться для равенства. Ваша функция никогда не должна возвращать изменяемую копию коллекции, используйте её только внутри для создания новой коллекции.
asMutable(): this
Унаследовано от
Map#asMutable()см.
Обсуждение
Если это возможно, используйте withMutations для работы с временными изменяемыми копиями, так как это предоставляет более удобный API и учитывает многие общие оптимизации.
Примечание: если коллекция уже изменяемая, asMutable возвращает себя.
Примечание: не все методы могут быть использованы на изменяемой коллекции или внутри withMutations! Прочитайте документацию для каждого метода, чтобы узнать, безопасно ли его использовать в withMutations.
wasAltered()
Возвращает true, если это изменяемая копия (см. asMutable()), и были применены изменения.
wasAltered(): boolean
Унаследовано от
Map#wasAltered()см.
asImmutable()
Ин-йана к asMutable. Поскольку он применяется к изменяемым коллекциям, эта операция является изменяемой и может вернуть себя (хотя может и не вернуть себя, т.е. если результат — пустая коллекция). После выполнения исходная изменяемая копия больше не должна изменяться, поскольку она может быть неизменяемым результатом.
asImmutable(): this
Унаследовано от
Map#asImmutable()см.
Обсуждение
Если это возможно, используйте withMutations для работы с временными изменяемыми копиями, так как это предоставляет более удобный API и учитывает многие общие оптимизации.
Преобразование в типы 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
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()
Равенство значений
equals()
True, если эта и другая коллекция имеют равенство значений, как определено Immutable.is().
equals(other: unknown): boolean
Унаследовано от
Collection#equals()Обсуждение
Примечание: Это эквивалентно Immutable.is(this, other), но предоставлено для возможности цепных выражений.
hashCode()
Вычисляет и возвращает хэшированную идентичность для этой коллекции.
hashCode(): number
Унаследовано от
Collection#hashCode()Обсуждение
Хэш-код коллекции используется для определения потенциального равенства и используется при добавлении этой коллекции в хеш-таблицу или в качестве ключа в карте, позволяя выполнять поиск по другому экземпляру.
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()
Истина, если результат следования по пути ключей или индексов через вложенные коллекции приводит к установленному значению.
hasIn(searchKeyPath: Iterable<unknown>): boolean
Унаследовано от
Collection#hasIn()
Преобразование в коллекции
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()
Преобразует эту коллекцию в список, отбрасывая ключи.
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()Обсуждение
count()
count(): number count(predicate: (value: V, key: K, iter: this) => boolean,context?: unknown): number
Наследуется от
Collection#count()
countBy()
Возвращает Seq.Keyed подсчётов, сгруппированных по возвращаемому значению функции 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()
© 2014–present, Lee Byron and other contributors
Licensed under the 3-clause BSD License.
https://immutable-js.com/docs/v4.2.1/OrderedMap/