セットを配列に変換するにはどうすればいいですか? 質問する

セットを配列に変換するにはどうすればいいですか? 質問する

Set は、一意の要素が保証された配列を作成するための優れた方法のように思えますが、ジェネレーター [Set].values を除いて、プロパティを取得するための優れた方法が公開されていません。ジェネレーター [Set].values は、 という厄介な方法で呼び出されますmySet.values.next()

Sets で同様の関数を呼び出すことができれば、これは問題ありませんmap。しかし、これもできません。

試してみましたArray.fromが、配列のようなオブジェクト (NodeList や TypedArrays など) のみを配列に変換しているようです。もう一度試すと、Object.keysSet では機能せず、Set.prototype には同様の静的メソッドがありません。

そこで質問です。特定のセットの値を持つ配列を作成するための便利な組み込みメソッドはありますか? (要素の順序は実際には重要ではありません)。

for...ofそのようなオプションが存在しない場合は、 、または同様のを使用するなど、それを実行するための優れた慣用的なワンライナーがあるかもしれません。

ベストアンサー1

for...ofそのようなオプションが存在しない場合は、 、または同様のを使用するなど、それを実行するための優れた慣用的なワンライナーがあるかもしれません。

実際、変換する方法はいくつかありますセット配列:

注: 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)];

おすすめ記事