Katakanlah saya memiliki peta berikut:
let myMap = new Map().set('a', 1).set('b', 2);
Dan saya ingin mendapatkan ['a', 'b'] berdasarkan hal di atas. Solusi saya saat ini sepertinya sangat panjang dan mengerikan.
let myMap = new Map().set('a', 1).set('b', 2);
let keys = [];
for (let key of myMap)
keys.push(key);
console.log(keys);
Pasti ada cara yang lebih baik, bukan?
javascript
dictionary
ecmascript-6
Lilleman
sumber
sumber
Array.from(Map.keys())
.Map
.Array.from(Map.values())
- jika dalam kasus, Anda memerlukan nilai, bukan kunci.Jawaban:
Map.keys()
mengembalikanMapIterator
objek yang dapat dikonversiArray
menggunakanArray.from
:EDIT: Anda juga bisa mengonversi objek iterable ke array menggunakan sintaks spread
sumber
this.map.values().slice is not a function
. Mungkin saya harus memperbarui.slice()
permintaan Anda dieksekusi sebelum operator spread. Coba[ ... Array.from(map.values()).slice(0) ]
const fooMap = new Map<number, string>(); const fooArray = [...fooMap.keys()];
berikut ini: TS2461: Ketik 'IterableIterator <number>' bukan tipe array. Jadi ini tidak diperbolehkan dalam TypeScript. Array.dari berfungsi seperti yang diharapkan...."abc"
untuk mendapatkan["a","b","c"]
ES6, yang tidak mungkin dilakukan di TS...."abc"
juga...("abc")
tidak bekerja di konsol chrome, yang mendukung ES6?Anda dapat menggunakan operator spread untuk mengonversi iterator Map.keys () di dalam Array.
sumber
Array.from(myMap.keys())
tidak berfungsi dalam skrip aplikasi google.Mencoba menggunakannya menghasilkan kesalahan
TypeError: Cannot find function from in object function Array() { [native code for Array.Array, arity=1] }
.Untuk mendapatkan daftar kunci di GAS, lakukan ini:
sumber
map.keys()
nilai pengembalian tidak dapat diubah.Saya membutuhkan sesuatu yang mirip dengan bentuk reaktif sudut:
sumber
Bukan jawaban terbaik untuk pertanyaan tetapi trik ini
new Array(...someMap)
menyelamatkan saya beberapa kali ketika saya membutuhkan kunci dan nilai untuk menghasilkan array yang diperlukan. Misalnya ketika ada kebutuhan untuk membuat komponen reaksi dari objek Peta berdasarkan nilai kunci dan nilai.sumber
OK, mari kita sedikit lebih komprehensif dan mulai dengan apa Peta untuk mereka yang tidak tahu fitur ini dalam JavaScript ... MDN mengatakan:
Seperti yang Anda sebutkan, Anda dapat dengan mudah membuat turunan Peta menggunakan kata kunci baru ... Dalam kasus Anda:
Jadi mari kita lihat ...
Cara yang Anda sebutkan adalah cara yang OK untuk melakukannya, tetapi ya, ada cara yang lebih ringkas untuk melakukan itu ...
Peta memiliki banyak metode yang dapat Anda gunakan, seperti
set()
yang telah Anda gunakan untuk menetapkan nilai kunci ...Salah satunya adalah
keys()
yang mengembalikan semua kunci ...Dalam kasus Anda, itu akan kembali:
dan Anda dengan mudah mengubahnya menjadi Array menggunakan cara ES6 , seperti operator spread ...
sumber