Set は、一意の要素が保証された配列を作成するための優れた方法のように思えますが、ジェネレーター [Set].values を除いて、プロパティを取得するための優れた方法が公開されていません。ジェネレーター [Set].values は、 という厄介な方法で呼び出されますmySet.values.next()
。
Sets で同様の関数を呼び出すことができれば、これは問題ありませんmap
。しかし、これもできません。
試してみましたArray.from
が、配列のようなオブジェクト (NodeList や TypedArrays など) のみを配列に変換しているようです。もう一度試すと、Object.keys
Set では機能せず、Set.prototype には同様の静的メソッドがありません。
そこで質問です。特定のセットの値を持つ配列を作成するための便利な組み込みメソッドはありますか? (要素の順序は実際には重要ではありません)。
for...of
そのようなオプションが存在しない場合は、 、または同様のを使用するなど、それを実行するための優れた慣用的なワンライナーがあるかもしれません。
ベストアンサー1
for...of
そのようなオプションが存在しない場合は、 、または同様のを使用するなど、それを実行するための優れた慣用的なワンライナーがあるかもしれません。
- 使用
Array.from
:
注: TypeScript の方が安全です。
const array = Array.from(mySet);
- 単に
spreading
配列にセットします:
注意: Setの展開はTypeScriptでコンパイルすると問題が発生します(問題 #8856)。代わりに上記を使用する方が安全ですArray.from
。
const array = [...mySet];
- 昔ながらの方法で、反復処理して新しい配列にプッシュします (セットには があります
forEach
)。
const array = [];
mySet.forEach(v => array.push(v));
- 以前は、非標準で現在は非推奨となっている配列理解構文を使用していました。
const array = [v for (v of mySet)];