Set は、一意の要素が保証された配列を作成するための良い方法のようですが、mySet.values.next()
の扱いにくい方法で呼び出されるgenerator [Set] .valuesを除いて、プロパティを取得するための良い方法を公開しません。
Setでmap
や同様の関数を呼び出すことができれば、これは問題ありませんでした。しかし、それはできません。
私はArray.from
を試しましたが、配列のような(NodeListとTypedArrays?)オブジェクトだけをArrayに変換しているようです。もう1つ試してください。Object.keys
はSetsでは機能せず、Set.prototypeにも同様の静的メソッドがありません。
だから、質問: 与えられたセットの値を持つ配列を作成するための便利な作り付けの方法はありますか? (要素の順序は重要ではありません)。
そのようなオプションが存在しない場合は、それを実行するためのニース慣用的なワンライナーがあるでしょうか。のように、for...of
、または同様の?
そのようなオプションが存在しない場合は、それを実行するためのニース慣用的なワンライナーがあるでしょうか。のように、〜のために使用する、または同様の?
確かに、 Set を Array に変換する方法はいくつかあります。
using Array.from
let array = Array.from(mySet);
単純に spreading
the配列に設定する
let array = [...mySet];
昔ながらのやり方で、繰り返して新しい配列にプッシュする(集合はforEach
を持っている)
let array = [];
mySet.forEach(v => array.Push(v));
以前は、非標準の、現在は非推奨の配列内包構文を使用しています。
let array = [v for (v of mySet)];
経由https://speakerdeck.com/anguscroll/es6-uncensored Angus Crollさんより
結局のところ、spread
演算子を使用できます。
var myArr = [...mySet];
あるいは、 Array.from
を使用します。
var myArr = Array.from(mySet);
希望する結果を得るためにspreadオペレータを使用してください
var arrayFromSet = [...set];
パーティーに遅刻するかもしれませんが、あなたはただ以下をすることができました:
const set = new Set(['a', 'b']);
const values = set.values();
const array = Array.from(values);
ES6をサポートしているブラウザや上記の機能を正しく満たすシムがあれば、これは問題なく動作するはずです。
編集 :@ c69が提案しているものを今日でも使用できます。
const set = new Set(['a', 'b']);
const array = [...set]; // or Array.from(set)
私の場合、解決策は次のとおりです。
var testSet = new Set();
var testArray = [];
testSet.add("1");
testSet.add("2");
testSet.add("2"); // duplicate item
testSet.add("3");
var someFunction = function (value1, value2, setItself) {
testArray.Push(value1);
};
testSet.forEach(someFunction);
console.log("testArray: " + testArray);
value1 = value2 => Set内の現在位置に含まれる値。両方の引数に同じ値が渡されます
IE11の下で働いた。
Set を使用してそれを配列に変換することは、配列をコピーすることと非常によく似ています...
そのため、 ES6 では非常に簡単な配列のコピーに同じ方法を使用できます。
たとえば、...
を使用できます。
このセットが以下にあると想像してください。
const a = new Set(["Alireza", "Dezfoolian", "is", "a", "developer"]);
あなたは単にそれを使ってそれを変換することができます:
const b = [...a];
結果は次のとおりです。
["Alireza", "Dezfoolian", "is", "a", "developer"]
配列と今、あなたは配列に使用できるすべてのメソッドを使用することができます...
その他の一般的な方法は次のとおりです。
const b = Array.from(a);
または次のようなループを使う
const b = [];
a.forEach(v => b.Push(v));