Dalam kode saya, saya memiliki beberapa kamus (seperti yang disarankan di sini ) yang diindeks String. Karena ini adalah jenis improvisasi, saya bertanya-tanya apakah ada saran tentang bagaimana saya bisa mengulang setiap kunci (atau nilai, semua yang saya butuhkan kunci untuk tetap). Bantuan apa pun dihargai!
myDictionary: { [index: string]: any; } = {};
javascript
html
typescript
ben657
sumber
sumber
for (var key in myDictionary) { }
:? Di dalam loop, Anda akan gunakankey
untuk mendapatkan kunci, danmyDictionary[key]
untuk mendapatkan nilaiJawaban:
Untuk mengulangi kunci / nilai, gunakan
for in
loop:sumber
Object.keys(target).forEach(key => { let value = target(key); /* Use key, value here */ });
. Jika Anda harus menunjukkan metode ini, setidaknya sebutkan risiko dan alternatif yang lebih baik bagi mereka yang belum tahu lebih baik.<ES 2017 :
> = ES 2017 :
sumber
Object.entries
bekerja di TypeScriptBagaimana dengan ini?
sumber
key
sama sekali, hanya biarkan kosong:[ , value]
. (Berkat komentar masalah ini .)Ada satu peringatan untuk loop kunci / nilai yang disebutkan Ian. Jika memungkinkan, Objek mungkin memiliki atribut yang melekat pada Prototipe mereka, dan ketika Anda menggunakan
in
operator, atribut ini akan dimasukkan. Jadi, Anda ingin memastikan bahwa kuncinya adalah atribut dari instance Anda, dan bukan prototipe. IE yang lebih lama dikenal karenaindexof(v)
muncul sebagai kunci.sumber
key
danvalue
bisaconst
.hasOwnProperty
cek dari objek target, tetapi lakukan ini:...if (Object.prototype.hasOwnProperty.call(myDictionary, key))...
Lain, jika Anda menggunakan eslint denganno-prototype-builtins
aturan, itu akan memancarkan kesalahan.Cara terpendek untuk mendapatkan semua nilai kamus / objek:
sumber
Untuk mendapatkan kunci:
sumber
Ians Answer baik, tetapi Anda harus menggunakan const daripada membiarkan kunci karena tidak pernah diperbarui.
sumber