我希望使用ES6的Set从一些字符串中获取唯一字符。
假设我们有一个字符串var str = 'abcdeaabc';
,我们可以从这个字符串创建一组字符:
var str = 'abcdeaadbc';
var chars = new Set(str);
现在我们有一组独特的字符:
abcd
。
我很惊讶char
集合有forEach
方法,但没有map
方法。
Set是一个可迭代对象,为什么我们不能使用map
函数来迭代Set?
我试图将chars
集合和chars.values()
SetIterator传递给Array.prototype.map
这样做:Array.prototype.map.call(chars, function(element) {...});
Array.prototype.map.call(chars.values(), function(element) {...});
但是每次尝试都失败了。
例如,假设我们想从字符串中获取唯一的符号,并返回一个带有下划线前缀的数组。例如:
['_a', '_b', '_c', '_d']
以下是我的两个解决方案:// First:
var result = Array.from(chars).map(function(c) {
return '_' + c;
});
// Second:
var result = [];
chars.forEach(function(c) {
this.push('_' + c);
}, result);
但是有没有一种方法可以在Set
上下文中调用Array.prototype
的map
函数呢?如果没有,为什么呢?
Set.entries
吗?实际上,再想一想,我认为那行不通... - Mark C.