And*_*erg 4 javascript arrays set ecmascript-6
我正在使用ES6 Set实例,我需要对它们应用一些转换.这些是转换,如果它们是数组就很简单.这是一个例子:
let s = new Set;
s.add(1);
s.add(2);
s.add(3);
let n = s.filter(val => val > 1); // TypeError, filter not defined
let n = Array.prototype.filter.call(s, val => val > 1); // []
Run Code Online (Sandbox Code Playgroud)
我希望结果可能是新的Set或数组.我同样想使用其他数组的理解方法,如filter,map,reduce,等我也想对ES6地图实例类似的行为也是如此.
这是可能的,还是我需要使用vanilla JS数组?
您可以使用获取数组中s的值
Array.from(s.values())
Run Code Online (Sandbox Code Playgroud)
Array.from文档声明它从类似数组或可迭代的对象创建一个新的Array实例.
Set.values返回一个新的Iterator对象,该对象包含插入顺序中Set对象中每个元素的值.
所以你的代码变成了
let s = new Set;
s.add(1);
s.add(2);
s.add(3);
let n = Array.from(s.values()).filter(val => val > 1)
Run Code Online (Sandbox Code Playgroud)