使用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或循环整个列表?
答案 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的类似链表实现是不可避免的。