OrderedSet

一种能够保证迭代顺序为元素添加(add)顺序的Set。

构造器
OrderedSet()

构建一个新的不可变OrderedSet包含所提供类集合结构的值。

  1. OrderedSet(): OrderedSet<any>
  2. OrderedSet<T>(): OrderedSet<T>
  3. OrderedSet<T>(collection: Iterable<T>): OrderedSet<T>
静态方法
OrderedSet.isOrderedSet()

如果提供的值为OrderedSet则返回true。

  1. OrderedSet.isOrderedSet(maybeOrderedSet: any): boolean
OrderedSet.of()

构建一个新的不可变OrderedSet包含所提供values

  1. OrderedSet.of<T>(...values: Array<T>): OrderedSet<T>
OrderedSet.fromKeys()

OrderedSet.fromKeys()使用集合或者JS对象的键创建一个新的不可变OrderedSet。

成员
size
  1. size
序列算法
cancat()

将其他的值或者集合与这个OrderedSet串联起来返回为一个新OrderedSet。

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

覆盖

Collection#concat

map()

返回一个由传入的mapper函数处理过值的新OrderedSet。

  1. map<M>(mapper: (value: T, key: number, iter: this) => M, context?: any): OrderedSet<M>

覆盖

Collection#map

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

注意:map()总是返回一个新的实例,即使它产出的每一个值都与原始值相同。

flatMap()

扁平化这个OrderedSet为一个新OrderedSet。

  1. flatMap<M>(
  2. mapper: (value: T, key: number, iter: this) => Iterable<M>,
  3. context?: any
  4. ): OrderedSet<M>

覆盖

Collection#flatMap

set.map(...).flatten(true)相似。

filter()

返回一个只有由传入方法predicate返回为true的值组成的新OrderedSet。

  1. filter<F>(
  2. predicate: (value: T, index: number, iter: this) => boolean,
  3. context?: any
  4. ): OrderedSet<F>
  5. filter(
  6. predicate: (value: T, index: number, iter: this) => any,
  7. context?: any
  8. ): this

覆盖

Collection#filter

注意:filter()总是返回一个新的实例,即使它的结果没有过滤掉任何一个值。

zip()

将OrderedSet与所提供集合拉链咬合(zipped)。

  1. zip(...collections: Array<Collection<any, any>>): OrderedSet<any>

覆盖

Collection.Index#zip

zipWIth类似,但这个使用默认的zipper建立数组

  1. const a = OrderedSet([ 1, 2, 3 ]);
  2. const b = OrderedSet([ 4, 5, 6 ]);
  3. const c = a.zip(b); // OrderedSet [ [ 1, 4 ], [ 2, 5 ], [ 3, 6 ] ]
zipWith()

将OrderedSet与所提供集合使用自定义zipper方法进行拉链咬合(zipped)。

  1. zipWith<U, Z>(
  2. zipper: (value: T, otherValue: U) => Z,
  3. otherCollection: Collection<any, U>
  4. ): OrderedSet<Z>
  5. zipWith<U, V, Z>(
  6. zipper: (value: T, otherValue: U, thirdValue: V) => Z,
  7. otherCollection: Collection<any, U>,
  8. thirdCollection: Collection<any, V>
  9. ): OrderedSet<Z>
  10. zipWith<Z>(
  11. zipper: (...any: Array<any>) => Z,
  12. ...collections: Array<Collection<any, any>>
  13. ): OrderedSet<Z>

IndexedIterator.zipWith

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

继承自

Collection.Indexed#[Symbol.iterator]

filterNot()

返回一个由所提供的predicate方法返回false过滤的新的相同类型的集合。

  1. filterNot(
  2. predicate: (value: T, key: number, iter: this) => boolean,
  3. context?: any
  4. ): this

继承自

Collection#filterNot

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

注意:filterNot总是返回一个新的实例,即使它没有过滤掉任何一个值。

reverse()

返回为一个逆序的新的同类型集合。

  1. reverse(): this

继承自

Collection#reverse

sort()

返回一个使用传入的comparator重新排序的新同类型集合。

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

继承自

Collection#sort

如果没有提供comparator方法,那么默认的比较将使用<>

comparator(valueA, valueB):

  • 返回值为0这个元素将不会被交换。
  • 返回值为-1(或者任意负数)valueA将会移到valueB之前。
  • 返回值为1(或者任意正数)valueA将会移到valueB之后。
  • 为空,这将会返回相同的值和顺序。

当被排序的集合没有定义顺序,那么将会返回同等的有序集合。比如map.sort()将返回OrderedMap。

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

注意:sort()总是返回一个新的实例,即使它没有改变排序。

sortBy()

sort类似,但能接受一个comparatorValueMapper方法,它允许通过更复杂的方式进行排序:

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

继承自

Collection#sortBy

  1. hitters.sortBy(hitter => hitter.avgHits)

注意:sortBy()总是返回一个新的实例,即使它没有改变排序。

groupBy()

返回一个Collection.KeyedsCollection.keyed,由传入的grouper方法分组。

  1. groupBy<G>(
  2. grouper: (value: T, key: number, iter: this) => G,
  3. context?: any
  4. ): Seq.Keyed<G, Collection<number, T>>

继承自

Collection#groupBy

  1. const { List, Map } = require('immutable')
  2. const listOfMaps = List([
  3. Map({ v: 0 }),
  4. Map({ v: 1 }),
  5. Map({ v: 1 }),
  6. Map({ v: 0 }),
  7. Map({ v: 2 })
  8. ])
  9. const groupsOfMaps = listOfMaps.groupBy(x => x.get('v'))
  10. // Map {
  11. // 0: List [ Map{ "v": 0 }, Map { "v": 0 } ],
  12. // 1: List [ Map{ "v": 1 }, Map { "v": 1 } ],
  13. // 2: List [ Map{ "v": 2 } ],
  14. // }
修改持久化
add()

返回一个新的在原Set基础上包含提供值的Set。

  1. add(value: T): this

注意:add可以在withMutations中使用。

delete()

在原Set基础上删除提供值返回为新的Set。

  1. delete(value: T): this

别名

remove()

注意:remove可以在withMutations中使用。

注意:delete不可安全地在IE8环境下使用,如果需要支持旧的浏览器请使用remove

clear()

返回一个新的不包含值的Set。

  1. claer(value: T): this

注意:claer可以在withMutations中使用。

uniton()

在原Set基础上添加collections中不在原Set中存在的值,返回为新的Set。

  1. union(...collections: Array<Collection<any, T> | Array<T>>): this

别名

merge()

注意:uniton可以在withMutations中使用。

intersect()

在原Set基础上剔除collections中未出现的值,返回为新Set。

  1. intersect(...collections: Array<Collection<any, T> | Array<T>>): this

注意:intersect可以在withMutations中使用。

subtract()

在原Set基础上剔除与collections共同包含的值,返回为新Set。

  1. subtract(...collections: Array<Collection<any, T> | Array<T>>): this

注意:subtract可以在withMutations中使用。

update()

这将是一个很有用的方法来将两个普通方法进行链式调用。RxJS中为”let”,lodash中为”thru”。

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

继承自

Collection#update

例如,在进行map和filter操作后计算总和操作:

  1. const { Seq } = require('immutable')
  2. function sum(collection) {
  3. return collection.reduce((sum, x) => sum + x, 0)
  4. }
  5. Map({ x: 1, y: 2, z: 3 })
  6. .map(x => x + 1)
  7. .filter(x => x % 2 === 0)
  8. .update(sum)
  9. // 6
修改持久化
add()

返回一个新的在原Set基础上包含提供值的Set。

  1. add(value: T): this

注意:add可以在withMutations中使用。

delete()

在原Set基础上删除提供值返回为新的Set。

  1. delete(value: T): this

别名

remove()

注意:remove可以在withMutations中使用。

注意:delete不可安全地在IE8环境下使用,如果需要支持旧的浏览器请使用remove

clear()

返回一个新的不包含值的Set。

  1. claer(value: T): this

注意:claer可以在withMutations中使用。

uniton()

在原Set基础上添加collections中不在原Set中存在的值,返回为新的Set。

  1. union(...collections: Array<Collection<any, T> | Array<T>>): this

别名

merge()

注意:uniton可以在withMutations中使用。

intersect()

在原Set基础上剔除collections中未出现的值,返回为新Set。

  1. intersect(...collections: Array<Collection<any, T> | Array<T>>): this

注意:intersect可以在withMutations中使用。

subtract()

在原Set基础上剔除与collections共同包含的值,返回为新Set。

  1. subtract(...collections: Array<Collection<any, T> | Array<T>>): this

注意:subtract可以在withMutations中使用。

update()

这将是一个很有用的方法来将两个普通方法进行链式调用。RxJS中为”let”,lodash中为”thru”。

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

继承自

Collection#update

例如,在进行map和filter操作后计算总和操作:

  1. const { Seq } = require('immutable')
  2. function sum(collection) {
  3. return collection.reduce((sum, x) => sum + x, 0)
  4. }
  5. Map({ x: 1, y: 2, z: 3 })
  6. .map(x => x + 1)
  7. .filter(x => x % 2 === 0)
  8. .update(sum)
  9. // 6
临时改变
withMutations()

注意:只有部分方法可以被可变的集合调用或者在withMutations中调用!查看文档中各个方法看他是否允许在withMuataions中调用。

  1. withMutations(mutator: (mutable: this) => any): this

Map#withMutations

asMutable()

注意:只有部分方法可以被可变的集合调用或者在withMutations中调用!查看文档中各个方法看他是否允许在withMuataions中调用。

  1. asMutable(): this

Map#asMutable

asImmutable()
  1. asImmutable(): this

Map#asImmutable

转换为JavaScript类型
toJS()

深层地将这个有序的集合转换转换为原生JS数组。

  1. toJS(): Array<any>

继承自

Collection.Index#toJS

toJSON()

浅转换这个有序的集合为原生JS数组。

  1. toJSON(): Array<any>

继承自

Collection.Index#toJSON

toArray()

浅转换这个有序的集合为原生JS数组并且丢弃key。

  1. toArray(): Array<any>

继承自

Collection#toArray

toObject()

浅转换这个有序的集合为原生JS对象。

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

继承自

Collection#toObject

转换为Seq
toSeq()

返回Seq.Indexed。

  1. toSeq(): Seq.Indexed<T>

继承自

Collection.Indexed#toSeq

fromEntrySeq()

如果这个集合是由[key, value]这种原组构成的,那么这将返回这些原组的Seq.Keyed。

  1. fromEntrySeq(): Seq.Keyed<any, any>

继承自

Collection.Index#fromEntrySeq

toKeyedSeq()

从这个集合返回一个Seq.Keyed,其中索引将视作key。

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

继承自

Collection#toKeyedSeq

如果你想对Collection.Indexed操作返回一组[index, value]对,这将十分有用。

返回的Seq将与Colleciont有相同的索引顺序。

  1. const { Seq } = require('immutable')
  2. const indexedSeq = Seq([ 'A', 'B', 'C' ])
  3. // Seq [ "A", "B", "C" ]
  4. indexedSeq.filter(v => v === 'B')
  5. // Seq [ "B" ]
  6. const keyedSeq = indexedSeq.toKeyedSeq()
  7. // Seq { 0: "A", 1: "B", 2: "C" }
  8. keyedSeq.filter(v => v === 'B')
  9. // Seq { 1: "B" }
toIndexedSeq()

将这个集合的值丢弃键(key)返回为Seq.Indexed。

  1. toIndexedSeq(): Seq.Indexed<T>

继承自

Collection#toIndexedSeq

toSetSeq()

将这个集合的值丢弃键(key)返回为Seq.Set。

  1. toSetSeq(): Seq.Set<T>

继承自

Collection#toSetSeq

等值比较
equals()

如果当前集合和另一个集合比较为相等,那么返回true,是否相等由Immutable.is()定义。

  1. equals(other: any): boolean

继承自

Collection#equals

注意:此方法与Immutable.is(this, other)等效,提供此方法是为了方便能够链式地使用。

hashCode()

计算并返回这个集合的哈希值。

  1. hashCode(): number

继承自

Collection#hashCode

集合的hashCode用于确定两个集合的相等性,在添加到Set或者被作为Map的键值时用于检测两个实例是否相等而会被使用到。

  1. const a = List([ 1, 2, 3 ]);
  2. const b = List([ 1, 2, 3 ]);
  3. assert(a !== b); // different instances
  4. const set = Set([ a ]);
  5. assert(set.has(b) === true);

当两个值的hashCode相等时,并不能完全保证他们是相等的,但当他们的hashCode不同时,他们一定是不等的。

读值
get()

返回提供的索引位置关联的值,或者当提供的索引越界时返回所提供的notSetValue。

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

继承自

Collection.Indexed#get

index可以为负值,表示从集合尾部开始索引。s.get(-1)取得集合最后一个元素。

has()

使用Immutable.is判断key值是否在Collection中。

  1. has(key: number): boolean

继承自

Collection#has

includes()

使用Immutable.is判断value值是否在Collection中。

  1. includes(value: T): boolean

继承自

Collection#includes

first()

取得集合第一个值。

  1. first(): T | undefined

继承自

Collection#first

last()

取得集合第一个值。

  1. last(): T | undefined

继承自

Collection#last

读值
get()

返回提供的索引位置关联的值,或者当提供的索引越界时返回所提供的notSetValue。

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

继承自

Collection.Indexed#get

index可以为负值,表示从集合尾部开始索引。s.get(-1)取得集合最后一个元素。

has()

使用Immutable.is判断key值是否在Collection中。

  1. has(key: number): boolean

继承自

Collection#has

includes()

使用Immutable.is判断value值是否在Collection中。

  1. includes(value: T): boolean

继承自

Collection#includes

first()

取得集合第一个值。

  1. first(): T | undefined

继承自

Collection#first

last()

取得集合第一个值。

  1. last(): T | undefined

继承自

Collection#last

读取深层数据
getIn()

返回根据提供的路径或者索引搜索到的嵌套的值。

  1. getIn(searchKeyPath: Iterable<any>, notSetValue?: any): any

继承自

Collection#getIn

hasIn()

根据提供的路径或者索引检测该处是否设置了值。

  1. hasIn(searchKeyPath: Iterable<any>): boolean

继承自

Collection#hasIn

读值
get()

返回提供的索引位置关联的值,或者当提供的索引越界时返回所提供的notSetValue。

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

继承自

Collection.Indexed#get

index可以为负值,表示从集合尾部开始索引。s.get(-1)取得集合最后一个元素。

has()

使用Immutable.is判断key值是否在Collection中。

  1. has(key: number): boolean

继承自

Collection#has

includes()

使用Immutable.is判断value值是否在Collection中。

  1. includes(value: T): boolean

继承自

Collection#includes

first()

取得集合第一个值。

  1. first(): T | undefined

继承自

Collection#first

last()

取得集合第一个值。

  1. last(): T | undefined

继承自

Collection#last

读取深层数据
getIn()

返回根据提供的路径或者索引搜索到的嵌套的值。

  1. getIn(searchKeyPath: Iterable<any>, notSetValue?: any): any

继承自

Collection#getIn

hasIn()

根据提供的路径或者索引检测该处是否设置了值。

  1. hasIn(searchKeyPath: Iterable<any>): boolean

继承自

Collection#hasIn

转换为集合
toMap()

将此集合转换为Map,如果键不可哈希,则抛弃。

  1. toMap(): Map<number, T>

继承自

Collection#toMap

注意:这和Map(this.toKeyedSeq())等效,为了能够方便的进行链式调用而提供。

toOrderedMap()

将此集合转换为Map,保留索引的顺序。

  1. toOrderedMap(): OrderedMap<number, T>

继承自

Collection#toOrderedMap

注意:这和OrderedMap(this.toKeyedSeq())等效,为了能够方便的进行链式调用而提供。

toSet()

将此集合转换为Set,如果值不可哈希,则抛弃。

  1. toSet(): Set<T>

继承自

Collection#toSet

注意:这和Set(this)等效,为了能够方便的进行链式调用而提供。

toOrderSet()

将此集合转换为Set,保留索引的顺序。

  1. toOrderedSet(): OrderedSet<T>

继承自

Collection#toOrderedSet

注意:这和OrderedSet(this.valueSeq())等效,为了能够方便的进行链式调用而提供。

toList()

将此集合转换为List,丢弃键值。

  1. toList(): List<T>

继承自

Collection#toList

此方法和List(collection)类似,为了能够方便的进行链式调用而提供。然而,当在Map或者其他有键的集合上调用时,collection.toList()会丢弃键值,同时创建一个只有值的list,而List(collection)使用传入的元组创建list。

  1. const { Map, List } = require('immutable')
  2. var myMap = Map({ a: 'Apple', b: 'Banana' })
  3. List(myMap) // List [ [ "a", "Apple" ], [ "b", "Banana" ] ]
  4. myMap.toList() // List [ "Apple", "Banana" ]
toStack()

将此集合转换为Stack,丢弃键值,抛弃不可哈希的值。

  1. toStack(): Stack<T>

注意:这和Stack(this)等效,为了能够方便的进行链式调用而提供。

读值
get()

返回提供的索引位置关联的值,或者当提供的索引越界时返回所提供的notSetValue。

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

继承自

Collection.Indexed#get

index可以为负值,表示从集合尾部开始索引。s.get(-1)取得集合最后一个元素。

has()

使用Immutable.is判断key值是否在Collection中。

  1. has(key: number): boolean

继承自

Collection#has

includes()

使用Immutable.is判断value值是否在Collection中。

  1. includes(value: T): boolean

继承自

Collection#includes

first()

取得集合第一个值。

  1. first(): T | undefined

继承自

Collection#first

last()

取得集合第一个值。

  1. last(): T | undefined

继承自

Collection#last

读取深层数据
getIn()

返回根据提供的路径或者索引搜索到的嵌套的值。

  1. getIn(searchKeyPath: Iterable<any>, notSetValue?: any): any

继承自

Collection#getIn

hasIn()

根据提供的路径或者索引检测该处是否设置了值。

  1. hasIn(searchKeyPath: Iterable<any>): boolean

继承自

Collection#hasIn

转换为集合
toMap()

将此集合转换为Map,如果键不可哈希,则抛弃。

  1. toMap(): Map<number, T>

继承自

Collection#toMap

注意:这和Map(this.toKeyedSeq())等效,为了能够方便的进行链式调用而提供。

toOrderedMap()

将此集合转换为Map,保留索引的顺序。

  1. toOrderedMap(): OrderedMap<number, T>

继承自

Collection#toOrderedMap

注意:这和OrderedMap(this.toKeyedSeq())等效,为了能够方便的进行链式调用而提供。

toSet()

将此集合转换为Set,如果值不可哈希,则抛弃。

  1. toSet(): Set<T>

继承自

Collection#toSet

注意:这和Set(this)等效,为了能够方便的进行链式调用而提供。

toOrderSet()

将此集合转换为Set,保留索引的顺序。

  1. toOrderedSet(): OrderedSet<T>

继承自

Collection#toOrderedSet

注意:这和OrderedSet(this.valueSeq())等效,为了能够方便的进行链式调用而提供。

toList()

将此集合转换为List,丢弃键值。

  1. toList(): List<T>

继承自

Collection#toList

此方法和List(collection)类似,为了能够方便的进行链式调用而提供。然而,当在Map或者其他有键的集合上调用时,collection.toList()会丢弃键值,同时创建一个只有值的list,而List(collection)使用传入的元组创建list。

  1. const { Map, List } = require('immutable')
  2. var myMap = Map({ a: 'Apple', b: 'Banana' })
  3. List(myMap) // List [ [ "a", "Apple" ], [ "b", "Banana" ] ]
  4. myMap.toList() // List [ "Apple", "Banana" ]
toStack()

将此集合转换为Stack,丢弃键值,抛弃不可哈希的值。

  1. toStack(): Stack<T>

注意:这和Stack(this)等效,为了能够方便的进行链式调用而提供。

迭代器
keys()

一个关于Collection键的迭代器。

  1. keys(): IterableIterator<number>

继承自

Collection#keys

注意:此方法将返回ES6规范的迭代器,并不支持Immutable.js的sequence算法,你可以尝试使用keySeq来满足需求。

values()

一个关于Collection值的迭代器。

  1. values(): IterableIterator<T>

继承自

Collection#values

注意:此方法将返回ES6规范的迭代器,并不支持Immutable.js的sequence算法,你可以尝试使用valueSeq来满足需求。

entries()

一个关于Collection条目的迭代器,是[ key, value ]这样的元组数据。

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

继承自

Collection#entries

注意:此方法将返回ES6规范的迭代器,并不支持Immutable.js的sequence算法,你可以尝试使用entrySeq来满足需求。

集合(Seq)
keySeq()

返回一个新的Seq.Indexed,其包含这个集合的键值。

  1. keySeq(): Seq.Indexed<number>

继承自

Collection#keySeq

valueSeq()

返回一个新的Seq.Indexed,其包含这个集合的所有值。

  1. valueSeq(): Seq.Indexed<T>

继承自

Collection#valueSeq

entrySeq()

返回一个新的Seq.Indexed,其为[key, value]这样的元组。

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

继承自

Collection#entrySeq

副作用
forEach()

sideEffect将会对集合上每个元素执行。

  1. forEach(
  2. sideEffect: (value: T, key: number, iter: this) => any,
  3. context?: any
  4. ): number

继承自

Collection#forEach

Array#forEach不同,任意一个sideEffect返回false都会停止循环。函数将返回所有参与循环的元素(包括最后一个返回false的那个)。

创建子集
slice()

返回一个新的相同类型的相当于原集合指定范围的元素集合,包含开始索引但不包含结束索引位置的值。

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

继承自

Collection#slice

如果起始值为负,那么表示从集合结束开始查找。例如slice(-2)返回集合最后两个元素。如果没有提供,那么新的集合将会从最开始那个元素开始。

如果终止值为负,表示从集合结束开始查找。例如silice(0, -1)返回除集合最后一个元素外所有元素。如果没提供,新的集合将会包含到原集合最后一个元素。

如果请求的子集与原集合相等,那么将会返回原集合。

rest()

返回一个不包含原集合第一个元素的新的同类型的集合。

  1. rest(): this

继承自

Collection#rest

butLast()

返回一个不包含原集合最后一个元素的新的同类型的集合。

  1. butLast(): this

继承自

Collection#butLast

skip()

返回一个不包含原集合从头开始amount个数元素的新的同类型集合。

  1. skip(amount: number): this

继承自

Collection#skip

skipLast()

返回一个不包含原集合从结尾开始amount个数元素的新的同类型集合。

  1. skipLast(amount: number): this

继承自

Collection#skipLast

skipWhile()

返回一个原集合从predicate返回false那个元素开始的新的同类型集合。

  1. skipWhile(
  2. predicate: (value: T, key: number, iter: this) => boolean,
  3. context?: any
  4. ): this

继承自

Collection#skipWhile

  1. const { List } = require('immutable')
  2. List([ 'dog', 'frog', 'cat', 'hat', 'god' ])
  3. .skipWhile(x => x.match(/g/))
  4. // List [ "cat", "hat", "god" ]
skipUntil()

返回一个原集合从predicate返回true那个元素开始的新的同类型集合。

  1. skipUntil(
  2. predicate: (value: T, key: number, iter: this) => boolean,
  3. context?: any
  4. ): this

继承自

Collection#skipUntil

  1. const { List } = require('immutable')
  2. List([ 'dog', 'frog', 'cat', 'hat', 'god' ])
  3. .skipUntil(x => x.match(/hat/))
  4. // List [ "hat", "god"" ]
take()

返回一个包含原集合从头开始的amount个元素的新的同类型集合。

  1. take(amount: number): this

继承自

Collection#take

takeLast()

返回一个包含从原集合结尾开始的amount个元素的新的同类型集合。

  1. takeLast(amount: number): this

继承自

Collection#take

takeWhile()

返回一个包含原集合从头开始的prediacte返回true的那些元素的新的同类型集合。

  1. takeWhile(
  2. predicate: (value: T, key: number, iter: this) => boolean,
  3. context?: any
  4. ): this

继承自

Collection#takeWhile

  1. const { List } = require('immutable')
  2. List([ 'dog', 'frog', 'cat', 'hat', 'god' ])
  3. .takeWhile(x => x.match(/o/))
  4. // List [ "dog", "frog" ]
takeUntil()

返回一个包含原集合从头开始的prediacte返回false的那些元素的新的同类型集合。

  1. takeUntil(
  2. predicate: (value: T, key: number, iter: this) => boolean,
  3. context?: any
  4. ): this

继承自

Collection#takeUntil

  1. const { List } = require('immutable')
  2. List([ 'dog', 'frog', 'cat', 'hat', 'god' ])
  3. .takeUntil(x => x.match(/at/))
  4. // List [ "dog", "frog" ]
创建子集
slice()

返回一个新的相同类型的相当于原集合指定范围的元素集合,包含开始索引但不包含结束索引位置的值。

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

继承自

Collection#slice

如果起始值为负,那么表示从集合结束开始查找。例如slice(-2)返回集合最后两个元素。如果没有提供,那么新的集合将会从最开始那个元素开始。

如果终止值为负,表示从集合结束开始查找。例如silice(0, -1)返回除集合最后一个元素外所有元素。如果没提供,新的集合将会包含到原集合最后一个元素。

如果请求的子集与原集合相等,那么将会返回原集合。

rest()

返回一个不包含原集合第一个元素的新的同类型的集合。

  1. rest(): this

继承自

Collection#rest

butLast()

返回一个不包含原集合最后一个元素的新的同类型的集合。

  1. butLast(): this

继承自

Collection#butLast

skip()

返回一个不包含原集合从头开始amount个数元素的新的同类型集合。

  1. skip(amount: number): this

继承自

Collection#skip

skipLast()

返回一个不包含原集合从结尾开始amount个数元素的新的同类型集合。

  1. skipLast(amount: number): this

继承自

Collection#skipLast

skipWhile()

返回一个原集合从predicate返回false那个元素开始的新的同类型集合。

  1. skipWhile(
  2. predicate: (value: T, key: number, iter: this) => boolean,
  3. context?: any
  4. ): this

继承自

Collection#skipWhile

  1. const { List } = require('immutable')
  2. List([ 'dog', 'frog', 'cat', 'hat', 'god' ])
  3. .skipWhile(x => x.match(/g/))
  4. // List [ "cat", "hat", "god" ]
skipUntil()

返回一个原集合从predicate返回true那个元素开始的新的同类型集合。

  1. skipUntil(
  2. predicate: (value: T, key: number, iter: this) => boolean,
  3. context?: any
  4. ): this

继承自

Collection#skipUntil

  1. const { List } = require('immutable')
  2. List([ 'dog', 'frog', 'cat', 'hat', 'god' ])
  3. .skipUntil(x => x.match(/hat/))
  4. // List [ "hat", "god"" ]
take()

返回一个包含原集合从头开始的amount个元素的新的同类型集合。

  1. take(amount: number): this

继承自

Collection#take

takeLast()

返回一个包含从原集合结尾开始的amount个元素的新的同类型集合。

  1. takeLast(amount: number): this

继承自

Collection#take

takeWhile()

返回一个包含原集合从头开始的prediacte返回true的那些元素的新的同类型集合。

  1. takeWhile(
  2. predicate: (value: T, key: number, iter: this) => boolean,
  3. context?: any
  4. ): this

继承自

Collection#takeWhile

  1. const { List } = require('immutable')
  2. List([ 'dog', 'frog', 'cat', 'hat', 'god' ])
  3. .takeWhile(x => x.match(/o/))
  4. // List [ "dog", "frog" ]
takeUntil()

返回一个包含原集合从头开始的prediacte返回false的那些元素的新的同类型集合。

  1. takeUntil(
  2. predicate: (value: T, key: number, iter: this) => boolean,
  3. context?: any
  4. ): this

继承自

Collection#takeUntil

  1. const { List } = require('immutable')
  2. List([ 'dog', 'frog', 'cat', 'hat', 'god' ])
  3. .takeUntil(x => x.match(/at/))
  4. // List [ "dog", "frog" ]
组合
flatten()

压平嵌套的集合。

  1. flatten(depth?: number): Collection<any, any>
  2. flatten(shallow?: boolean): Collection<any, any>

继承自

Collection#flatten

默认会深度地经常压平集合操作,返回一个同类型的集合。可以指定depth为压平深度或者是否深度压平(为true表示仅进行一层的浅层压平)。如果深度为0(或者shllow:false)将会深层压平。

压平仅会操作其他集合,数组和对象不会进行此操作。

注意:flatten(true)操作是在集合上进行,同时返回一个集合。

减少值
reduce()

将传入的方法reducer在集合每个元素上调用并传递缩减值,以此来缩减集合的值。

  1. reduce<R>(
  2. reducer: (reduction: R, value: T, key: number, iter: this) => R,
  3. initialReduction: R,
  4. context?: any
  5. ): R
  6. reduce<R>(reducer: (reduction: T | R, value: T, key: number, iter: this) => R): R

继承自

Collection#reduce

Array#reduce

如果initialReduction未提供,那么将会使用集合第一个元素。

reduceRight()

逆向地缩减集合的值(从结尾开始)。

  1. reduceRight<R>(
  2. reducer: (reduction: R, value: T, key: number, iter: this) => R,
  3. initialReduction: R,
  4. context?: any
  5. ): R
  6. reduceRight<R>(
  7. reducer: (reduction: T | R, value: T, key: number, iter: this) => R
  8. ): R

继承自

Collection#reduceRight

注意:与this.reverse().reduce()等效,为了与Array#reduceRight看齐而提供。

every()

当集合中所有元素predicate都判定为true时返回ture。

  1. every(
  2. predicate: (value: T, key: number, iter: this) => boolean,
  3. context?: any
  4. ): boolean

继承自

Collection#every

some()

当集合中任意元素predicate判定为true时返回ture。

  1. some(
  2. predicate: (value: T, key: number, iter: this) => boolean,
  3. context?: any
  4. ): boolean

继承自

Collection#some

join()

将值连接为字符串,并且在每两个值之间插入分割。默认分隔为","

  1. join(separator?: string): string

继承自

Collection#join

isEmpty()

当集合不包含值时返回true。

  1. isEmpty(): boolean

继承自

Collection#isEmpty

对于惰性Seq,isEmpty会对他经常迭代来确定是否为空。至少会迭代一次。

count()

返回集合的大小。

  1. count(): number
  2. count(
  3. predicate: (value: T, key: number, iter: this) => boolean,
  4. context?: any
  5. ): number

继承自

Collection#count

不管此集合是否惰性地确定大小(某些Seq不能),这个方法将总是返回正确的大小。如果必要,他将会评估一个惰性的Seq。

如果predicate提供了,方法返回的数量将是集合中predicate返回true的元素个数。

countBy()

返回Seq.Keyed的数量,由grouper方法将值分组。

  1. countBy<G>(
  2. grouper: (value: T, key: number, iter: this) => G,
  3. context?: any
  4. ): Map<G, number>

注意:这不是一个惰性操作。

查找
find()

返回集合中第一个符合与所提供的断言的值。

  1. find(
  2. predicate: (value: T, key: number, iter: this) => boolean,
  3. context?: any,
  4. notSetValue?: T
  5. ): T | undefined

继承自

Collection#find

findLast()

返回集合中最后一个符合与所提供的断言的值。

  1. findLast(
  2. predicate: (value: T, key: number, iter: this) => boolean,
  3. context?: any,
  4. notSetValue?: T
  5. ): T | undefined

继承自

Collection#findLast

注意:predicate将会逆序地在每个值上调用。

findEntry()

返回第一个符合所提供断言的值的[key, value]。

  1. findEntry(
  2. predicate: (value: T, key: number, iter: this) => boolean,
  3. context?: any,
  4. notSetValue?: T
  5. ): [number, T] | undefined

继承自

Collection#findEntry

findLastEntry()

返回最后一个符合所提供断言的值的[key, value]。

  1. findLastEntry(
  2. predicate: (value: T, key: number, iter: this) => boolean,
  3. context?: any,
  4. notSetValue?: T
  5. ): [number, T] | undefined

继承自

Collection#findLastEntry

注意:predicate将会逆序地在每个值上调用。

findKey()

返回第一个predicate返回为true的键。

  1. findKey(
  2. predicate: (value: T, key: number, iter: this) => boolean,
  3. context?: any
  4. ): number | undefined

继承自

Collection#findKey

findLastKey()

返回最后一个predicate返回为true的键。

  1. findLastKey(
  2. predicate: (value: T, key: number, iter: this) => boolean,
  3. context?: any
  4. ): number | undefined

继承自

Collection#findLastKey

注意:predicate将会逆序地在每个值上调用。

keyOf()

返回与提供的搜索值关联的键,或者undefined。

  1. keyOf(searchValue: T): number | undefined

继承自

Collection#keyOf

lastKeyOf()

返回最后一个与提供的搜索值关联的键或者undefined。

  1. lastKeyOf(searchValue: T): number | undefined

继承自

Collection#lastKeyOf

max()

返回集合中最大的值。如果有多个值比较为相等,那么将返回第一个。

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

继承自

Collection#max

comparator的使用方法与Collection#sort是一样的,如果未提供那么默认的比较为>

当两个值比较为相等时,第一个遇见的值将会被返回。另一方面,如果comparator是可交换的,那么max将会独立于输入的顺序。默认的比较器>只有在类型不一致时才可交换。

如果comparator返回0或者值为NaN、undefined或者null,这个值将会被返回。

maxBy()

和max类似,但还能接受一个comparatorValueMapper来实现更复杂的比较。

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

继承自

Collection#maxBy

  1. hitters.maxBy(hitter => hitter.avgHits)
min()

返回集合中最小的值,如果有多个值比较为相等,将会返回第一个。

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

继承自

Collection#min

当两个值比较为相等时,第一个遇见的值将会被返回。另一方面,如果comparator是可交换的,那么min将会独立于输入的顺序。默认的比较器<只有在类型不一致时才可交换。

如果comparator返回0或者值为NaN、undefined或者null,这个值将会被返回。

minBy()

和min类似,但还能接受一个comparatorValueMapper来实现更复杂的比较。

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

继承自

Collection#minBy

  1. hitters.minBy(hitter => hitter.avgHits)
对比
isSubset()

如果iter包含集合中所有元素则返回true。

  1. isSubset(iter: Iterable<T>): boolean

继承自

Collection#isSubset

isSuperset()

如果集合包含iter中所有元素则返回true。

  1. isSuperset(iter: Iterable<T>): boolean

继承自

Collection#isSuperset