访问ImmutableJS OrderedSet()

时间:2016-03-19 06:52:19

标签: immutable.js

使用ImmutableJS,文档需要工作和实际工作示例。

const a = [["a"],["b"],["c"]]
const b = Immutable.List(a)
const c = Immutable.OrderedSet(a)

b.first()   // => "a"
b.get(1)    // => "b"
c.first()   // => ["a"]
c.get(1)    // => undefined !uh oh!
c.toList().get(1) // => "b" !indirect!

问题:如何打印出.OrderedSet c的第二个元素,而不将其转换为.List或循环整个列表?

1 个答案:

答案 0 :(得分:2)

你可以这样做:

// using some ES6 features
let ordSet = immutable.OrderedSet([1, 2, 3]) 
let iterator = ordSet[Symbol.iterator] // get iterator to the collection
iterator.next() // 1 
iterator.next() // 2
iterator.next() // 3 

这就是说,请注意,即使这不是最好的语法,从性能的角度来看,它是最好的:OrderedSet不提供对其元素的随机访问,每个元素只记得它的后继和前任。因此,获取n - 元素需要n跳,无论immutable.js是否为它提供了一些花哨的帮助。如果add / delete保持快速,AFAIK,OrderedSet的类似链表实现是不可避免的。