【问题标题】:How to convert a Set to an Array in Chrome?如何在 Chrome 中将 Set 转换为数组?
【发布时间】:2015-06-20 16:56:41
【问题描述】:

How to convert Set to Array? 给出了将 Set 转换为 Array 的三个答案,目前在 Chrome 浏览器中均不适用。

假设我有一个简单的集合

var set_var = new Set(['a', 'b', 'c']);

我可以遍历我的变量并将元素添加到一个空数组中

var array_var = [];
set_var.forEach(function(element){array_var.push(element)});

但是有没有其他方法可以得到更广泛的浏览器支持?

【问题讨论】:

  • Set 本身就是 ES6 Harmony 的一部分。你不会找到“更广泛的浏览器支持”,因为这暂时是实验性技术。有一些方法可以在没有Array.prototype.forEach 的情况下进行迭代,但这些方法首先适用于不支持Set 的浏览器。
  • @JonathanSampson 好的,我听到了。那么让我们专注于Chrome。 Chrome 确实支持Set,只是不支持其他浏览器支持的所有功能。 Chrome中还有其他方法可以将Set转换为数组吗?
  • 这个怎么样,它更复杂,但如果你只想要另一种方式: var mySet = Set(['a','b','c']); iter = mySet.keys(); for(var i = 0; i

标签: javascript google-chrome


【解决方案1】:

为什么不尝试使用 set 迭代器?

function setToArray(set) {
  var it = set.values(),
      ar = [],
      ele = it.next();

  while(!ele.done) {
    ar.push(ele.value);
    ele = it.next();
  }

  return ar;
}

setToArray(new Set(['a', 'b', false, 0, 'c'])); // ["a", "b", false, 0, "c"]

【讨论】:

  • 集合迭代器有什么优势吗?
  • @Cecilia 我不确定您在寻找什么、性能、兼容性或其他任何东西。这只是众多方法中的一种。老实说,我看不出和你有很大的不同。
  • 如果 Set 包含 Falsy 值,此实现将失败。始终检查 current.finished 而不是 current.value
  • @garkin 错过了 PO 的示例数据,更新了答案。谢谢。
猜你喜欢
  • 2016-08-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-15
  • 2021-10-19
相关资源
最近更新 更多