c69*_*c69 427 javascript arrays collections syntax ecmascript-harmony
套装似乎是一个很好的方式来创建保证唯一的元素数组,但它不公开任何好的办法来获取属性,除了发电机[设置] .values,被称为在一个尴尬的方式mySet.values.next().
如果您可以map在集合上调用和类似的函数,那就没问题了.但你也不能这样做.
我试过了Array.from,但似乎只是将类似数组(NodeList和TypedArrays?)的对象转换为Array.另一个尝试:Object.keys对Sets不起作用,而Set.prototype没有类似的静态方法.
所以,问题是:是否有任何方便的内置方法来创建具有给定Set值的数组?(元素的顺序并不重要).
如果没有这样的选择,那么也许有一个很好的惯用的单行代码呢?喜欢,使用for...of或类似?
ade*_*neo 772
如果没有这样的选择,那么也许有一个很好的惯用的单行代码呢?比如,用于...或类似的?
运用 Array.from
let array = Array.from(mySet);
Run Code Online (Sandbox Code Playgroud)
只需spreading在数组中设置
let array = [...mySet];
Run Code Online (Sandbox Code Playgroud)
旧的时尚方式,迭代并推送到一个新的阵列(集合有forEach)
let array = [];
mySet.forEach(v => array.push(v));
Run Code Online (Sandbox Code Playgroud)
以前,使用非标准,现在不推荐使用的数组解析语法:
let array = [v for (v of mySet)];
Run Code Online (Sandbox Code Playgroud)
c69*_*c69 65
通过https://speakerdeck.com/anguscroll/es6-由Angus Croll提供
事实证明,我们可以使用spread运算符:
var myArr = [...mySet];
Run Code Online (Sandbox Code Playgroud)
或者,或者,使用Array.from:
var myArr = Array.from(mySet);
Run Code Online (Sandbox Code Playgroud)
也许到晚了聚会,但是您可以执行以下操作:
const set = new Set(['a', 'b']);
const values = set.values();
const array = Array.from(values);
Run Code Online (Sandbox Code Playgroud)
在支持ES6的浏览器中,或者如果您的填充程序正确地填充了上述功能,这应该可以正常工作。
编辑:今天您可以使用@ c69建议:
const set = new Set(['a', 'b']);
const array = [...set]; // or Array.from(set)
Run Code Online (Sandbox Code Playgroud)