Katakanlah Anda memiliki objek javascript seperti ini:
var data = { foo: 'bar', baz: 'quux' };
Anda dapat mengakses properti dengan nama properti:
var foo = data.foo;
var baz = data["baz"];
Tetapi apakah mungkin untuk mendapatkan nilai-nilai ini jika Anda tidak mengetahui nama propertinya? Apakah sifat tidak teratur dari properti ini membuat tidak mungkin untuk membedakannya?
Dalam kasus saya, saya berpikir secara khusus tentang situasi di mana suatu fungsi perlu menerima serangkaian pasangan nama-nilai, tetapi nama properti dapat berubah.
Pemikiran saya tentang cara melakukan ini sejauh ini adalah meneruskan nama properti ke fungsi bersama dengan datanya, tetapi ini terasa seperti retasan. Saya lebih suka melakukan ini dengan introspeksi jika memungkinkan.
sumber
Versi lama JavaScript (<ES5) membutuhkan penggunaan
for..in
loop:ES5 memperkenalkan Object.keys dan Array # forEach yang membuatnya sedikit lebih mudah:
ES2017 memperkenalkan
Object.values
danObject.entries
.sumber
sumber
Anda sering kali ingin memeriksa properti tertentu dari sebuah objek, tanpa semua metode dan properti prototipe yang dibagikan:
sumber
Ini akan mendapatkan semua properti dan nilainya (diwarisi atau dimiliki, dapat dihitung atau tidak) dalam objek baru. benda asli tidak tersentuh. Sekarang objek baru dapat dilintasi menggunakan
sumber
sumber
.hasOwnProperty()
ketika menggunakan for untuk melakukan iterasi suatu objek.hasOwnProperty()
kembali metode yangboolean
menunjukkan apakah objek memiliki properti tertentu sebagai milik sendiri (sebagai lawan mewarisi itu) . lihat contohAnda bisa menggunakan Object.keys () , "yang mengembalikan larik dari nama properti enumerable objek tertentu, dalam urutan yang sama seperti yang kita dapatkan pada loop normal."
Anda dapat menggunakan objek apa pun sebagai pengganti
stats
:sumber
Object.keys( stats )[key]
tidak masuk akal, akan selalu begituundefined
.sumber