小编典典

如何将集合转换为数组?

all

Set 似乎是创建具有保证唯一元素的数组的好方法,但它没有公开任何获取属性的好方法,除了生成器
[Set].values,它以一种尴尬的方式调用mySet.values.next()

如果您可以map在 Sets 上调用和类似功能,这将是可以的。但你也不能那样做。

我试过Array.from了,但似乎只将类似数组的(NodeList 和 TypedArrays ?)对象转换为
Array。另一种尝试:Object.keys不适用于Sets,并且Set.prototype没有类似的静态方法。

所以,问题是: 是否有任何方便的内置方法来创建具有给定 Set 值的 Array ? (元素的顺序并不重要)。

如果不存在这样的选择,那么也许有一个很好的惯用单线来做到这一点?喜欢,使用for...of,还是类似的?


阅读 185

收藏
2022-03-03

共1个答案

小编典典

如果不存在这样的选择,那么也许有一个很好的惯用单线来做到这一点?喜欢,使用 for…of,还是类似的?

实际上,有几种方法可以将Set转换为Array

使用Array.from

let array = Array.from(mySet);

只需spreading在数组中设置

let array = [...mySet];

老式的方式,迭代并推送到一个新数组(集合确实有forEach

let array = [];
mySet.forEach(v => array.push(v));

以前,使用非标准的,现在已弃用的数组理解语法:

let array = [v for (v of mySet)];
2022-03-03