访问 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 的这种类似于链表的实现是不可避免的。
使用 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 的这种类似于链表的实现是不可避免的。