Saya memiliki array asosiatif dalam Javascript:
var dictionary = {
"cats": [1,2,3,4,5],
"dogs": [6,7,8,9,10]
};
Bagaimana cara mendapatkan kunci kamus ini? yaitu saya inginkan
var keys = ["cats", "dogs"];
Sunting 7 tahun kemudian: Hanya untuk mendapatkan terminologi yang benar - tidak ada yang namanya 'asosiatif array' dalam Javascript - ini secara teknis hanya sebuah object
dan itu adalah kunci objek yang kita inginkan.
javascript
arrays
Simon_Weaver
sumber
sumber
Jawaban:
Kamu bisa memakai:
Object.keys(obj)
Contoh:
Lihat referensi di bawah untuk dukungan browser. Ini didukung di Firefox 4.20, Chrome 5, IE9. Tautan di bawah ini berisi potongan kode yang dapat Anda tambahkan jika
Object.keys()
tidak didukung di browser Anda.https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object/keys
sumber
Coba ini:
hasOwnProperty
diperlukan karena mungkin untuk memasukkan kunci ke objek prototipedictionary
. Tetapi Anda biasanya tidak ingin kunci-kunci itu dimasukkan dalam daftar Anda.Misalnya, jika Anda melakukan ini:
dan kemudian lakukan
for...in
perulangandictionary
, Anda akan mendapatkana
danb
, tetapi Anda juga akan mendapatkannyac
.sumber
keys.push(key);
. Anda hanya menarik (dan dengan demikian menyatakannya) dari namespace global. :)Ini untuk ... dalam pernyataan .
sumber
dictionary.hasOwnProperty(key)
jika tidak, Anda mungkin berakhir dengan metode dari rantai prototipe ..Hanya catatan singkat, berhati-hatilah dalam menggunakan for..in jika Anda menggunakan perpustakaan (jQuery, prototipe, dll.), Karena kebanyakan dari mereka menambahkan metode ke Objek yang dibuat (termasuk kamus).
Ini berarti bahwa ketika Anda mengulanginya, nama metode akan muncul sebagai kunci. Jika Anda menggunakan perpustakaan, lihat dokumentasi dan cari bagian enumerable, di mana Anda akan menemukan metode yang tepat untuk iterasi objek Anda.
sumber
Cara JQUERY sederhana.
Inilah yang saya gunakan
DictionaryObj menjadi objek kamus javascript yang ingin Anda lalui. nilai, kunci tentu saja menjadi nama mereka dalam kamus.
sumber
Saat ini saya menggunakan balasan Rob de la Cruz
dan dalam sebuah file yang dimuat sejak awal, saya memiliki beberapa baris kode yang dipinjam dari tempat lain di internet yang mencakup kasus versi lama dari juru bahasa skrip yang tidak memiliki Object.keys bawaan.
Saya pikir ini adalah yang terbaik dari kedua dunia untuk proyek-proyek besar: kode modern sederhana dan dukungan yang kompatibel untuk browser versi lama, dll.
Secara efektif itu menempatkan solusi JW ke dalam fungsi ketika Object.keys (obj) Rob de la Cruz tidak tersedia secara native.
sumber