セットを配列に変換する方法は?



How Convert Set Array



この記事の翻訳元: セットを配列に変換する方法は?

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



mySet.values.next()に電話できれば、これは問題ありませんでした。およびセットの同様の関数。 コレクションmapおよび同様の関数を呼び出すことができれば、問題はありません。 しかし、それもできません。 しかし、これもできません。

試しましたmap 、しかし、配列のような(NodeListおよびTypedArrays?)オブジェクトのみを配列に変換しているようです。 以前に試しましたArray.from 、しかし、配列(NodeListやTypedArrays?)のようなオブジェクトを配列に変換するだけのようです。 別の試み:Array.fromセットでは機能せず、Set.prototypeには同様の静的メソッドがありません。 別の試み:Object.keysセットには適用されず、Set.prototypeには同様の静的メソッドがありません。



だから、質問: 特定のセットの値を使用して配列を作成するための便利な組み込みメソッドはありますか? だから質問 はい指定されたSet値で配列を作成するための便利な組み込みメソッドはありますか? (要素の順序は実際には重要ではありません)。 (要素の順序は重要ではありません)。

そのようなオプションが存在しない場合、それを行うための素晴らしい慣用的なワンライナーがあるかもしれませんか? そのようなオプションがない場合、おそらく良い慣用的な1行のコードがありますか? たとえば、Object.keysを使用します、 または類似 ? たとえば、for...ofまたは同様ですか?


#1階

参照: https://stackoom.com/question/1MD4u/セットを配列に変換する方法




#2階

そのようなオプションが存在しない場合、それを行うための素晴らしい慣用的なワンライナーがあるかもしれませんか? そのようなオプションがない場合、おそらく良い慣用的な1行のコードがありますか? のように、for ... of、または同様のものを使用しますか? たとえば、...または同様のものですか?

確かに、変換するいくつかの方法があります セットするアレイ 実際、いくつかの方法があります セットする に変換 アレイ

を使用して for...of 使用する Array.from

Array.from

単に let array = Array.from(mySet) 配列で設定 単に spreading セットする spreading 配列です

spreading

昔ながらの方法で、繰り返して新しい配列にプッシュします(セットにはlet array = [...mySet] があります) 昔ながらの方法で、繰り返して新しい配列にプッシュします(コレクションにはforEachがあります)

forEach

以前は、非標準で非推奨の配列理解構文を使用していました。 以前は、非標準の配列解析構文が使用されていましたが、現在は以下の使用は推奨されていません。

let array = [] mySet.forEach(v => array.push(v))

#3階

経由 https://speakerdeck.com/anguscroll/es6-uncensored アンガス・クロル 沿って https://speakerdeck.com/anguscroll/es6- アンガス・クロル提供

結局、let array = [v for (v of mySet)] を使用できますオペレーター: 使用できることがわかりましたspread演算子:

spread

または、代わりに、 var myArr = [...mySet] または、 Array.from

Array.from

#4階

var myArr = Array.from(mySet) を使用していると仮定します一時的に配列内の一意の値を取得してから配列に変換し直すには、次の方法を使用してみてください。 一時的にのみ使用していると仮定しますSet配列内の一意の値を取得してから配列に戻すには、次を使用してみてください。

Set

これは使用に依存しています アンダースコア または it-dash これは使用に依存します アンダースコア または it-dash


#5階

おそらくパーティーに遅れるでしょうが、あなたはただ次のことをすることができます: パーティーかもしれませんが、次のことができます。

_.uniq([])

これは、ES6をサポートしているブラウザー、または上記の機能を正しくポリフィルするシムがある場合に問題なく機能するはずです。 これは、ES6をサポートするブラウザー、または上記の機能を正しく満たすシムがある場合は問題ありません。

編集 :今日は、@ c69が提案するものを使用できます: 編集 :今日、@ c69が提案したものを使用できます:

const set = new Set(['a', 'b']) const values = set.values() const array = Array.from(values)

#6階

スプレッド演算子を使用して、目的の結果を取得します

const set = new Set(['a', 'b']) const array = [...set] // or Array.from(set)