【问题标题】:How do I construct a Set with an Array如何用数组构造集合
【发布时间】:2013-07-07 19:27:35
【问题描述】:

我正在使用 Node.JS v0.11.3 中的 Set--harmony 标志。 API 工作正常,我可以addremoveclear 等。但是我无法用数组初始化一个集合。我试过了(根据the MDN page的提示)

var mySet = new Set([1, 1, 2]);

如何将数组转换为集合? MDN过时了吗? Node.JS 是否根本没有实现该功能?

【问题讨论】:

  • 看代码不知道?
  • 对于新手,node v12确实支持这个。
  • 在 Node V4 中似乎无法正常工作

标签: javascript node.js set ecmascript-6


【解决方案1】:

Set 构造函数的v8 implementation 尚不支持current draft of the Harmony specification 的§15.16.1.1 中提到的iteratorcomparator 参数,并且节点使用v8 作为其JavaScript 解释器。

作为创可贴,您可以使用simplesets package

【讨论】:

    【解决方案2】:

    现在使用提供给构造函数的数组在 v8 中可以正常工作。我正在使用节点 v6.2.0(v8 版本 5.0.71.47)。

    > let mySet = new Set([1,2,3]);
    undefined
    > mySet;
    Set { 1, 2, 3 }
    
    > for ( let key of mySet ) { console.log(key) }
    1
    2
    3
    undefined
    
    > mySet.size
    3
    

    【讨论】:

      【解决方案3】:

      根据我的阅读,我的理解是,它的实现是新的和实验性的。有些事情可能无法正常工作。此外,我还注意到许多情况下,新功能在经过一段时间的成熟之后才表现出预期的效果。如果功能是您的目标,最好避免这种情况,只需手动添加它们。

      【讨论】:

        【解决方案4】:

        你可以试试这个:

        示例会话:

        > var sets = require('simplesets')
        undefined
        > var mySet = new sets.Set([1, 1, 2]);
        undefined
        > mySet
        { _items: [ 1, 2 ] }
        > mySet.size()
        2
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-10-06
          • 1970-01-01
          • 2020-05-10
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-07-06
          相关资源
          最近更新 更多