ES6のSetを使用して一部の文字列から一意の文字を取得したいと考えています。 それでは、私たちは、文字列var str = 'abcdeaabc';
を持っており、この文字列から文字のセット作成することを想定してみましょう:abcd
:SetオブジェクトでArray.prototype.mapを呼び出せない理由
var str = 'abcdeaadbc';
var chars = new Set(str);
は、今、私たちは、ユニークな文字のセットを持っています。 私はchar
セットがforEach
メソッドを持っており、何のmap
方法を持っていないことに驚きました。
セットが反復可能なオブジェクトであるので、なぜ我々はセットを反復するmap
機能を使用することはできませんか?
私はArray.prototype.map
にこの方法をchars
セットとchars.values()
SetIteratorを渡そうとしました:
Array.prototype.map.call(chars, function(element) {...});
Array.prototype.map.call(chars.values(), function(element) {...});
しかし、すべてが失敗してみてください。
例えば、我々は文字列からユニークなシンボルを取得し、アンダースコアの前でそれらの配列を返すようにしたいと仮定しましょう。例えば:ここで
['_a', '_b', '_c', '_d']
は私の2つのソリューションです:
// 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'を試しましたか?実際には、2番目の考えでは、私はそれが動作するとは思わない... –
はい、それはあまりにも失敗しました。 –
http://stackoverflow.com/a/35374005/5812121また、代わりに、 '' let result = [... chars] .map(c => \ '_ $ {c} \'); ' – timolawl