Gunakan JSON.stringify
metode asli . Bekerja dengan objek bersarang dan semua browser utama mendukung metode ini.
str = JSON.stringify(obj);
str = JSON.stringify(obj, null, 4); // (Optional) beautiful indented output.
console.log(str); // Logs output to dev tools console.
alert(str); // Displays output using window.alert()
Tautan ke Referensi API Mozilla dan contoh lainnya.
obj = JSON.parse(str); // Reverses above operation (Just in case if needed.)
Gunakan custom JSON.stringify replacer jika Anda menemukan kesalahan Javascript ini
"Uncaught TypeError: Converting circular structure to JSON"
Sandeep
sumber
sumber
console.log
yaituconsole.log(JSON.stringify(obj,null, 4));
{}
yang tidak kosong. Jadi pastikan untuk memeriksaconsole.log(obj)
sebelum berpikir objek Anda kosong saatstrigify()
kembali{}
.Jawaban:
sumber
console.dir(object)
:Perhatikan bahwa
console.dir()
fitur ini tidak standar. Lihat Dokumen Web MDNsumber
console.dir
adalah bahwa Anda masih dapat memperluas dan membaca nilai-nilai di konsol Anda setelah variabel telah dikumpulkan. Ini dijelaskan dalam artikel SOconsole.dir
adalah ketika Anda menyimpan konsol ke file, semua properti ada di file seperti yang diharapkan. Itu tidak terjadi ketika menggunakan console.log saja.coba ini :
Ini akan mencetak versi objek yang dikencangkan. Jadi alih-alih
[object]
sebagai output Anda akan mendapatkan konten objek.sumber
typeerror: Converting circular structure to JSON
?Yah, Firefox (terima kasih kepada @Bojangles untuk informasi terperinci) memiliki
Object.toSource()
metode yang mencetak objek seperti JSON danfunction(){}
.Itu cukup untuk sebagian besar keperluan debugging, saya kira.
sumber
.toSource()
sebenarnya hanya Firefox . Kupikir aku akan memberitahumu.Jika Anda ingin menggunakan lansiran, untuk mencetak objek Anda, Anda dapat melakukan ini:
alert("myObject is " + myObject.toSource());
Ini harus mencetak setiap properti dan nilai yang sesuai dalam format string.
sumber
Jika Anda ingin melihat data dalam format tabel yang dapat Anda gunakan
Tabel dapat diurutkan jika Anda mengklik kolom tabel.
Anda juga dapat memilih kolom apa yang akan ditampilkan:
Anda dapat menemukan informasi lebih lanjut tentang console.table di sini
sumber
Di NodeJS Anda dapat mencetak objek dengan menggunakan
util.inspect(obj)
. Pastikan untuk menyatakan kedalamannya atau Anda hanya akan memiliki cetakan objek yang dangkal.sumber
Fungsi:
Pemakaian:
Contoh:
http://jsfiddle.net/WilsonPage/6eqMn/
sumber
Cukup gunakan
Contoh
Atau
Juga, catatan dalam fungsi javascript dianggap sebagai objek.
Sebagai catatan tambahan:
Sebenarnya Anda dapat menetapkan properti baru seperti ini dan mengaksesnya console.log atau menampilkannya dalam peringatan
sumber
Gunakan ini:
sumber
Seperti yang dikatakan sebelumnya yang terbaik dan cara paling sederhana yang saya temukan adalah
sumber
navigator
.Untuk mencetak objek lengkap dengan Node.js dengan warna sebagai bonus:
Warna tentu saja opsional, 'kedalaman: null' akan mencetak objek penuh.
Opsi tampaknya tidak didukung di browser.
Referensi:
https://developer.mozilla.org/en-US/docs/Web/API/Console/dir
https://nodejs.org/api/console.html#console_console_dir_obj_options
sumber
NB: Dalam contoh-contoh ini, yourObj mendefinisikan objek yang ingin Anda periksa.
Pertama cara paling tidak favorit saya namun paling banyak digunakan untuk menampilkan objek:
Ini adalah cara defacto untuk menampilkan konten suatu objek
akan menghasilkan sesuatu seperti:
Saya pikir solusi terbaik adalah dengan melihat melalui Objects Keys, dan kemudian melalui Nilai Objects jika Anda benar-benar ingin melihat apa yang dipegang objek ...
Ini akan menampilkan sesuatu seperti: (gambar di atas: kunci / nilai yang disimpan dalam objek)
Ada juga opsi baru ini jika Anda menggunakan ECMAScript 2016 atau lebih baru:
Ini akan menghasilkan output yang rapi: Solusi yang disebutkan dalam jawaban sebelumnya:
console.log(yourObj)
menampilkan terlalu banyak parameter dan bukan cara yang paling ramah pengguna untuk menampilkan data yang Anda inginkan . Itu sebabnya saya merekomendasikan kunci logging dan kemudian nilai secara terpisah.Selanjutnya :
Seseorang dalam komentar sebelumnya menyarankan yang ini, namun itu tidak berhasil bagi saya. Jika itu berfungsi untuk orang lain di peramban lain atau sesuatu, maka kudos! Saya masih meletakkan kode di sini untuk referensi! Akan menampilkan sesuatu seperti ini ke konsol:
sumber
console.table(yourObj)
bekerja untuk saya di Google Chrome Versi 77.0.3865.90 (Build Resmi) (64-bit). Terima kasih telah berbagi!(Ini telah ditambahkan ke perpustakaan saya di GitHub )
Menemukan kembali roda di sini! Tak satu pun dari solusi ini bekerja untuk situasi saya. Jadi, saya cepat-cepat memperbaiki jawaban wilsonpage . Yang ini bukan untuk mencetak ke layar (melalui konsol, atau bidang teks atau apa pun). Ini berfungsi dengan baik dalam situasi itu dan berfungsi dengan baik seperti yang diminta OP
alert
. Banyak jawaban di sini tidak membahas menggunakanalert
seperti yang diminta OP. Bagaimanapun, itu diformat untuk transportasi data. Versi ini tampaknya mengembalikan hasil yang sangat miriptoSource()
. Saya belum diujiJSON.stringify
, tetapi saya menganggap ini tentang hal yang sama. Versi ini lebih seperti poli-fil sehingga Anda dapat menggunakannya di lingkungan apa pun. Hasil dari fungsi ini adalah deklarasi objek Javascript yang valid.Saya tidak akan ragu jika sesuatu seperti ini sudah ada di SO di suatu tempat, tapi itu lebih singkat untuk membuatnya daripada menghabiskan waktu mencari jawaban masa lalu. Dan karena pertanyaan ini adalah top hit saya di google ketika saya mulai mencari tentang ini; Saya pikir meletakkannya di sini mungkin bisa membantu orang lain.
Bagaimanapun, hasil dari fungsi ini akan menjadi representasi string dari objek Anda, bahkan jika objek Anda telah menyematkan objek dan array, dan bahkan jika objek atau array tersebut memiliki objek dan array yang tertanam lebih jauh. (Aku mendengarmu suka minum? Jadi, aku merapikan mobilmu dengan pendingin. Dan kemudian, aku merapikan pendinginmu dengan pendingin. Jadi, pendinginmu bisa minum, sementara kamu menjadi dingin.)
Array disimpan dengan
[]
alih - alih{}
dan karenanya tidak memiliki pasangan kunci / nilai, hanya nilai. Seperti array biasa. Oleh karena itu, mereka dibuat seperti array lakukan.Juga, semua string (termasuk nama kunci) dikutip, ini tidak perlu kecuali string tersebut memiliki karakter khusus (seperti spasi atau garis miring). Tapi, saya tidak merasa ingin mendeteksi ini hanya untuk menghapus beberapa tanda kutip yang mungkin masih berfungsi dengan baik.
String yang dihasilkan ini kemudian dapat digunakan dengan
eval
atau hanya membuangnya ke var melalui manipulasi string. Dengan demikian, buat kembali objek Anda lagi, dari teks.Beri tahu saya jika saya mengacaukan semuanya, berfungsi dengan baik dalam pengujian saya. Juga, satu-satunya cara saya bisa memikirkan untuk mendeteksi tipe
array
adalah untuk memeriksa keberadaanlength
. Karena Javascript benar-benar menyimpan array sebagai objek, saya tidak dapat benar-benar memeriksa tipearray
(tidak ada tipe seperti itu!). Jika ada orang lain yang tahu cara yang lebih baik, saya akan senang mendengarnya. Karena, jika objek Anda juga memiliki properti bernamalength
maka fungsi ini keliru akan memperlakukannya sebagai array.EDIT: Menambahkan cek untuk objek bernilai nol. Terima kasih Brock Adams
EDIT: Di bawah ini adalah fungsi tetap untuk dapat mencetak objek rekursif tanpa batas. Ini tidak mencetak sama seperti
toSource
dari FF karenatoSource
akan mencetak rekursi tak terbatas satu kali, sedangkan, fungsi ini akan membunuhnya segera. Fungsi ini berjalan lebih lambat daripada yang di atas, jadi saya menambahkannya di sini alih-alih mengedit fungsi di atas, karena hanya diperlukan jika Anda berencana untuk meneruskan objek yang menghubungkan kembali ke diri mereka sendiri, di suatu tempat.Uji:
Hasil:
CATATAN: Mencoba mencetak
document.body
adalah contoh yang mengerikan. Untuk satu, FF hanya mencetak string objek kosong saat menggunakantoSource
. Dan ketika menggunakan fungsi di atas, FF crashSecurityError: The operation is insecure.
. Dan Chrome akan mogokUncaught RangeError: Maximum call stack size exceeded
. Jelas,document.body
itu tidak dimaksudkan untuk dikonversi menjadi string. Karena terlalu besar, atau menentang kebijakan keamanan untuk mengakses properti tertentu. Kecuali, saya mengacaukan sesuatu di sini, katakan!sumber
ObjToSource(document.body)
misalnya.ObjToSource(document.body)
karena rekursi yang tak terbatas. Bahkandocument.body.toSource()
di FireFox mengembalikan objek kosong.document.body
masih belum dapat dicetak. Lihat Catatan.document.body
hanyalah jalan pintas untuk menunjukkan beberapa masalah besar. Anda sekarang telah memperbaiki yang terburuk dari itu dan saya sudah terbalik. (Meskipun, saya percaya bahwa pendekatan yang berbeda dapat menanganidocument.body
. Sebagian besar jawaban di sini juga tidak akan menentangnya.)Jika Anda ingin mencetak objek yang panjangnya penuh, bisa digunakan
Jika Anda ingin mencetak objek dengan mengubahnya ke string lalu
sumber
JSON.stringify
ketika Anda mencoba menyatukan dengan objek string. Jika Anda menggunakanconsole.log(object)
, itu harus cukup mencetak isi objekInilah cara untuk melakukannya:
sumber
Saya membutuhkan cara untuk mencetak objek secara rekursif, yang diberikan jawaban pagewil (Terima kasih!). Saya memperbaruinya sedikit untuk memasukkan cara untuk mencetak hingga tingkat tertentu, dan untuk menambahkan spasi sehingga benar-benar indentasi berdasarkan tingkat saat ini kita berada sehingga lebih mudah dibaca.
Pemakaian:
sumber
Saya selalu menggunakan
console.log("object will be: ", obj, obj1)
. dengan cara ini saya tidak perlu melakukan solusi dengan menggunakan JSON. Semua properti objek akan diperluas dengan baik.sumber
Cara lain untuk menampilkan objek dalam konsol adalah dengan
JSON.stringify
. Lihat contoh di bawah ini:sumber
Fungsi Javascript
Objek pencetakan
via print_r dalam Javascript
sumber
dimana
object
objekmuatau Anda dapat menggunakan ini di alat dev chrome, tab "konsol":
console.log(object);
sumber
console.log(Object.keys(object));
sementara saya tahu bahwa hanya mencetak kunci properti, itu cukup bagi saya untuk keperluan saya;)Asumsikan objek
obj = {0:'John', 1:'Foo', 2:'Bar'}
Cetak konten objek
Output konsol (Chrome DevTools):
Semoga itu bisa membantu!
sumber
Saya lebih suka menggunakan
console.table
untuk mendapatkan format objek yang jelas, jadi bayangkan Anda memiliki objek ini:Dan Anda akan melihat tabel yang rapi dan mudah dibaca seperti di bawah ini:
sumber
Fungsi pembantu kecil yang selalu saya gunakan dalam proyek saya untuk debugging sederhana dan cepat melalui konsol. Inspirasi diambil dari Laravel.
Pemakaian
dd(123.55);
output:sumber
Anda juga dapat menggunakan konsep literal template ES6 untuk menampilkan konten objek JavaScript dalam format string.
sumber
saya menggunakan metode cetak pagewil, dan itu bekerja dengan sangat baik.
di sini adalah versi saya yang sedikit diperpanjang dengan indentasi (ceroboh) dan pembatas prop / ob yang berbeda:
sumber
Modifikasi lain dari kode pagewils ... nya tidak mencetak apa pun selain string dan meninggalkan angka dan bidang boolean kosong dan saya memperbaiki kesalahan ketik pada typeof kedua tepat di dalam fungsi yang dibuat oleh megaboss.
sumber
Inilah fungsinya.
Itu dapat menampilkan objek menggunakan indentasi tab dengan keterbacaan.
sumber