Set sepertinya cara yang bagus untuk membuat Array dengan elemen unik yang dijamin, tetapi tidak memaparkan cara yang baik untuk mendapatkan properti, kecuali untuk generator [Set] .values, yang disebut dengan cara canggung mySet.values.next()
.
Ini akan baik-baik saja, jika Anda dapat memanggil map
dan fungsi serupa di Sets. Tetapi Anda tidak bisa melakukan itu juga.
Saya sudah mencoba Array.from
, tetapi tampaknya hanya mengkonversi objek seperti array (NodeList dan TypedArrays?) Ke Array. Object.keys
Percobaan lain: tidak berfungsi untuk Set, dan Set.prototype tidak memiliki metode statis yang sama.
Jadi, pertanyaannya: Apakah ada metode inbuilt yang nyaman untuk membuat Array dengan nilai dari Set yang diberikan? (Urutan elemen tidak terlalu penting).
jika tidak ada pilihan seperti itu, maka mungkin ada satu-liner idiomatik yang bagus untuk melakukan itu? suka, menggunakan for...of
, atau serupa?
var array = [v for (v of mySet)];
tidak bekerja di chrome 46[...mySet]
.Array.from(mySet);
[...mySet]
memiliki masalah saat dikompilasi menggunakan Typecript (lihat masalah ini ), jadi mungkin lebih aman untuk digunakanArray.from(mySet)
jika Anda berniat untuk mengonversi ke Typecript dalam waktu dekat.via https://speakerdeck.com/anguscroll/es6-uncensored oleh Angus Croll
Ternyata, kita bisa menggunakan
spread
operator:Atau, sebagai alternatif, gunakan
Array.from
:sumber
Array.from
dan...
Array.from
. developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…chrome://flags/#enable-javascript-harmony
Ingat itu eksperimental, jangan berpikir sejenak bahwa ini adalah solusi yang baik untuk pengembangan.Dengan anggapan Anda hanya menggunakan
Set
sementara untuk mendapatkan nilai unik dalam array dan kemudian mengonversi kembali ke Array, coba gunakan ini:Ini bergantung pada penggunaan garis bawah atau tanda hubung .
sumber
Mungkin terlambat ke pesta, tetapi Anda bisa melakukan hal berikut:
Ini harus berfungsi tanpa masalah di browser yang memiliki dukungan untuk ES6 atau jika Anda memiliki shim yang dengan benar mengisi fungsi di atas.
Sunting : Hari ini Anda bisa menggunakan apa yang disarankan @ c69:
sumber
set.entries()
Anda akan mendapatkan berbagai pasang. Anda dapat menggunakanset.values()
untuk mendapatkan array polos.var array = Array.from(set);
.entries
juga.values
. Seperti @Buffalo yang disebutkan di atas -Array.from(set)
sudah cukup.Array.from()
tidak berfungsi seperti yang diharapkan. Tapi sekarang menyebar danArray.from()
keduanya bekerja dengan baik.Gunakan spread Operator untuk mendapatkan hasil yang Anda inginkan
sumber
Dalam kasus saya, solusinya adalah:
value1 sama dengan value2 => Nilai yang terkandung dalam posisi saat ini di Set. Nilai yang sama diteruskan untuk kedua argumen
Bekerja di bawah IE11.
sumber
Menggunakan Set dan mengonversinya menjadi array sangat mirip dengan menyalin Array ...
Jadi Anda dapat menggunakan metode yang sama untuk menyalin array yang sangat mudah di ES6
Misalnya, Anda bisa menggunakan
...
Bayangkan Anda memiliki Perangkat ini di bawah ini:
Anda cukup mengonversinya menggunakan:
dan hasilnya adalah:
Array dan sekarang Anda dapat menggunakan semua metode yang dapat Anda gunakan untuk array ...
Cara umum lain untuk melakukannya:
atau menggunakan loop seperti:
sumber
Kode di bawah ini membuat satu set dari array dan kemudian, menggunakan
...
operator.sumber
Berikut adalah cara mudah untuk mendapatkan hanya nilai mentah unik dari array. Jika Anda mengubah array menjadi Set dan setelah ini, lakukan konversi dari Set ke array. Konversi ini hanya berfungsi untuk nilai mentah, untuk objek dalam array tidak valid. Cobalah sendiri.
sumber
JAWABAN SEDERHANA
cukup sebarkan set ke dalam []
Hasil : [1,5]
sumber