访问 ImmutableJS OrderedSet()

Accessing ImmutableJS OrderedSet()

使用 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 或遍历整个列表?

您可以这样做:

// 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 是否为它提供了一些奇特的助手。 AFAIK,如果 add / delete 应该保持快速,那么 OrderedSet 的这种类似于链表的实现是不可避免的。