Set 似乎是创建具有保证唯一元素的数组的好方法,但它没有公开任何获取属性的好方法,除了生成器 [Set].values,它以一种尴尬的方式调用mySet.values.next()。
mySet.values.next()
如果您可以map在 Sets 上调用和类似功能,这将是可以的。但你也不能那样做。
map
我试过Array.from了,但似乎只将类似数组的(NodeList 和 TypedArrays ?)对象转换为 Array。另一种尝试:Object.keys不适用于Sets,并且Set.prototype没有类似的静态方法。
Array.from
Object.keys
所以,问题是: 是否有任何方便的内置方法来创建具有给定 Set 值的 Array ? (元素的顺序并不重要)。
如果不存在这样的选择,那么也许有一个很好的惯用单线来做到这一点?喜欢,使用for...of,还是类似的?
for...of
如果不存在这样的选择,那么也许有一个很好的惯用单线来做到这一点?喜欢,使用 for…of,还是类似的?
实际上,有几种方法可以将Set转换为Array:
使用Array.from
let array = Array.from(mySet);
只需spreading在数组中设置
spreading
let array = [...mySet];
老式的方式,迭代并推送到一个新数组(集合确实有forEach)
forEach
let array = []; mySet.forEach(v => array.push(v));
以前,使用非标准的,现在已弃用的数组理解语法:
let array = [v for (v of mySet)];