【问题标题】:Javascript convert set to plain ArrayJavascript 转换设置为普通数组
【发布时间】:2014-11-07 13:31:48
【问题描述】:

Set - Javascript | MDN

示例:迭代集

第 16 行

var myArr = [v for (v of mySet)];

我的代码:

var s_priceCatsArr = [ n for ( n of s_priceCats ) ];

这会在Google Chrome Version 38.0.2125.111 m 上产生错误Uncaught SyntaxError: Unexpected token for

Customise and control Google Chrome > Settings > About 告诉我我的谷歌浏览器是最新的。

是我做错了什么还是不支持此功能?

更新:

我去了chrome://flags 并勾选了Enable Experimental JavaScript。然后重新启动我的浏览器,但我仍然得到同样的错误。我想我只需要等到该功能被正确添加然后...... :(

【问题讨论】:

  • 正如您链接的文档顶部明确所述,这是 ES6 功能。 Chrome 通常不会像 Firefox 那样支持这些。
  • @Pointy:但是 Kangax 的表格显示 Chrome 38 确实 支持集:kangax.github.io/compat-table/es6/#Set 不知道具体的语法,上面的注释说它不支持构造函数呢。
  • 您可以尝试查看 chrome://flags 并选择“启用实验性 JavaScript”标志。您链接的页面中也提到了这一点!
  • Chrome 还不支持数组解析。它确实支持(通过该标志)SetMap API。一两天前我还在测试这个。
  • @georg 最后的评论表明,作为一种语言特性,它已被推回 ES7。无论如何,Array.from 版本更强大,如果更详细一点。

标签: javascript google-chrome


【解决方案1】:

Chrome 尚不(截至版本 38.0.2125.111)支持“数组推导”,即[expr of Iterable]

Iterable 转换为 Array 的标准 ES6 函数是 Array.from,但这在 Chrome 中也没有。由于我尚未发现的原因,我无法让 MDN shim 在Set 上工作。 (啊,根据文档,垫片不支持“真正的可迭代”)

另一种适用于 Firefox 但(但同样不适用于 Chrome)的方法是“传播”运算符...

> var s = new Set([1,2,3,4])
undefined
> [...s]
[1, 2, 3, 4]

EDIT 在 Chrome 46(可能更早版本)中,for (x of <Iterable>)Array.from... 扩展运算符现在都可以使用了。

【讨论】:

    猜你喜欢
    • 2012-01-31
    • 2017-01-10
    • 2015-02-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-02
    • 1970-01-01
    相关资源
    最近更新 更多