Użyj JSON.stringify
metody natywnej . Działa z zagnieżdżonymi obiektami i wszystkie główne przeglądarki obsługują tę metodę.
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()
Link do strony Mozilla API Reference i innych przykładów.
obj = JSON.parse(str); // Reverses above operation (Just in case if needed.)
Użyj niestandardowego zamiennika JSON.stringify, jeśli napotkasz ten błąd Javascript
"Uncaught TypeError: Converting circular structure to JSON"
Sandeep
źródło
źródło
console.log
np.console.log(JSON.stringify(obj,null, 4));
{}
dla niepustego obiektu. Pamiętaj więc, aby sprawdzić,console.log(obj)
zanim Twój obiekt będzie pusty postrigify()
powrocie{}
.Odpowiedzi:
źródło
console.dir(object)
:Pamiętaj, że ta
console.dir()
funkcja jest niestandardowa. Zobacz MDN Web Docsźródło
console.dir
jest to, że możesz nadal rozwijać i odczytywać wartości w konsoli po zmiataniu zmiennej. Jest to opisane w innym artykule SOconsole.dir
jest to, że kiedy zapisujesz konsolę do pliku, wszystkie właściwości są w pliku zgodnie z oczekiwaniami. Nie dzieje się tak, gdy używa się tylko console.log.Spróbuj tego :
Spowoduje to wydrukowanie wersji obiektu stringify. Zamiast tego
[object]
jako wynik otrzymasz zawartość obiektu.źródło
typeerror: Converting circular structure to JSON
?Cóż, Firefox (dzięki @Bojangles za szczegółowe informacje) ma
Object.toSource()
metodę, która drukuje obiekty jako JSON ifunction(){}
.To chyba wystarcza do większości celów debugowania.
źródło
.toSource()
to tak naprawdę tylko Firefox . Pomyślałem, że dam ci znać.Jeśli chcesz użyć alertu, aby wydrukować obiekt, możesz to zrobić:
alert("myObject is " + myObject.toSource());
Powinien wydrukować każdą właściwość i odpowiadającą jej wartość w formacie ciągu.
źródło
Jeśli chcesz zobaczyć dane w formacie tabelarycznym, możesz użyć
Tabelę można posortować, klikając kolumnę tabeli.
Możesz także wybrać kolumny do wyświetlenia:
Więcej informacji na temat console.table można znaleźć tutaj
źródło
W NodeJS możesz wydrukować obiekt za pomocą
util.inspect(obj)
. Podaj głębokość, w przeciwnym razie będziesz miał tylko płytki wydruk.źródło
Funkcjonować:
Stosowanie:
Przykład:
http://jsfiddle.net/WilsonPage/6eqMn/
źródło
Po prostu użyj
Przykład
Lub
Uwaga: funkcje w javascript są uważane za obiekty.
Jako dodatkowa uwaga:
W rzeczywistości możesz przypisać nową właściwość taką jak ta i uzyskać do niej dostęp do pliku console.log lub wyświetlić ją w trybie alertu
źródło
Użyj tego:
źródło
Jak powiedziano wcześniej, najlepszym i najprostszym sposobem, jaki znalazłem, było
źródło
navigator
.Aby wydrukować pełny obiekt za pomocą Node.js z kolorami jako bonus:
Kolory są oczywiście opcjonalne, „depth: null” wydrukuje pełny obiekt.
Opcje nie wydają się być obsługiwane w przeglądarkach.
Bibliografia:
https://developer.mozilla.org/en-US/docs/Web/API/Console/dir
https://nodejs.org/api/console.html#console_console_dir_obj_options
źródło
Uwaga: W tych przykładach yourObj definiuje obiekt, który chcesz zbadać.
Po pierwsze mój najmniej ulubiony, ale najczęściej wykorzystywany sposób wyświetlania obiektu:
Jest to defaktyczny sposób wyświetlania zawartości obiektu
wyprodukuje coś takiego:
Myślę, że najlepszym rozwiązaniem jest przejrzenie kluczy obiektów, a następnie wartości obiektów, jeśli naprawdę chcesz zobaczyć, co zawiera obiekt ...
Wyprowadzi coś takiego: (na zdjęciu powyżej: klucze / wartości przechowywane w obiekcie)
Istnieje również ta nowa opcja, jeśli używasz ECMAScript 2016 lub nowszej wersji:
Spowoduje to uporządkowane wyjście: Rozwiązanie wspomniane w poprzedniej odpowiedzi:
console.log(yourObj)
wyświetla zbyt wiele parametrów i nie jest najbardziej przyjaznym dla użytkownika sposobem wyświetlania pożądanych danych . Dlatego polecam rejestrowanie kluczy, a następnie wartości osobno.Dalej:
Ktoś z wcześniejszego komentarza zasugerował ten, jednak dla mnie to nigdy nie zadziałało. Jeśli to działa na kogoś innego w innej przeglądarce lub coś w tym stylu, wtedy kudos! Nadal umieszczam kod tutaj w celach informacyjnych! Wyśle coś takiego do konsoli:
źródło
console.table(yourObj)
pracował dla mnie w Google Chrome w wersji 77.0.3865.90 (oficjalna wersja) (64-bit). Dzięki za udostępnienie!(Zostało to dodane do mojej biblioteki na GitHub )
Odkryj na nowo koło tutaj! Żadne z tych rozwiązań nie działało w mojej sytuacji. Szybko więc udokumentowałem odpowiedź wilsonpage'a . Ten nie jest przeznaczony do drukowania na ekranie (przez konsolę, pole tekstowe lub cokolwiek innego). To działa dobrze w takich sytuacjach i działa dobrze, zgodnie z wnioskiem PO
alert
. Wiele odpowiedzi tutaj nie dotyczy użyciaalert
zgodnie z żądaniem PO. W każdym razie jest on jednak sformatowany do przesyłania danych. Ta wersja wydaje się zwracać bardzo podobny wynik jaktoSource()
. Nie testowałem przeciwkoJSON.stringify
, ale zakładam, że chodzi o to samo. Ta wersja jest bardziej jak poly-fil, dzięki czemu można go używać w dowolnym środowisku. Wynikiem tej funkcji jest poprawna deklaracja obiektu JavaScript.Nie wątpiłbym, że coś takiego już gdzieś jest na SO, ale było to tylko krótsze, aby to zrobić, niż spędzić chwilę na szukaniu poprzednich odpowiedzi. A ponieważ to pytanie było moim największym hitem w Google, kiedy zacząłem o tym szukać; Pomyślałem, że umieszczenie go tutaj może pomóc innym.
W każdym razie wynikiem tej funkcji będzie ciąg znaków reprezentujący obiekt, nawet jeśli obiekt ma obiekty osadzone i tablice, a nawet jeśli te obiekty lub tablice mają jeszcze inne obiekty osadzone i tablice. (Słyszałem, że lubisz pić? A więc wypompowałem twój samochód chłodnicą. A potem wypchnąłem twoją lodówkę chłodnicą. Więc twoja chłodnica może pić, kiedy jesteś cool.)
Tablice są przechowywane
[]
zamiast,{}
a zatem nie mają par klucz / wartość, tylko wartości. Jak zwykłe tablice. Dlatego są tworzone tak jak tablice.Również wszystkie ciągi (w tym nazwy kluczy) są cytowane, nie jest to konieczne, chyba że ciągi te zawierają znaki specjalne (takie jak spacja lub ukośnik). Ale nie chciałem tego wykrywać, aby usunąć niektóre cytaty, które w przeciwnym razie nadal działałyby dobrze.
Ten wynikowy ciąg może być następnie użyty z
eval
lub po prostu zrzucony do manipulacji ciągiem var varru. W ten sposób ponownie utworzysz obiekt z tekstu.Daj mi znać, jeśli wszystko zepsułem, działa dobrze w moich testach. Jedynym sposobem, w jaki mogłem wymyślić typ,
array
było sprawdzenie jego obecnościlength
. Ponieważ JavaScript naprawdę przechowuje tablice jako obiekty, nie mogę sprawdzić typuarray
(nie ma takiego typu!). Jeśli ktoś inny zna lepszy sposób, chciałbym to usłyszeć. Ponieważ jeśli twój obiekt ma również właściwość o nazwie,length
funkcja ta omyłkowo potraktuje ją jako tablicę.EDYCJA: Dodano sprawdzanie obiektów o wartości zerowej. Dzięki, Brock Adams
EDYCJA: Poniżej znajduje się stała funkcja umożliwiająca drukowanie nieskończenie rekurencyjnych obiektów. To nie jest drukowane tak samo jak
toSource
z FF, ponieważtoSource
wydrukuje nieskończoną rekurencję jeden raz, gdzie jak, ta funkcja natychmiast ją zabije. Ta funkcja działa wolniej niż powyższa, więc dodaję ją tutaj zamiast edytować powyższą funkcję, ponieważ jest ona potrzebna tylko wtedy, gdy planujesz gdzieś przekazać obiekty, które łączą się z sobą.Test:
Wynik:
UWAGA: Próba wydrukowania
document.body
jest okropnym przykładem. Po pierwsze, FF po prostu drukuje pusty ciąg znaków obiektu podczas używaniatoSource
. Podczas korzystania z powyższej funkcji FF ulega awariiSecurityError: The operation is insecure.
. Chrome się zawiesiUncaught RangeError: Maximum call stack size exceeded
. Oczywiściedocument.body
nie miał być konwertowany na ciąg znaków. Ponieważ jest albo za duży, albo przeciwko polityce bezpieczeństwa, aby uzyskać dostęp do niektórych właściwości. Chyba, że coś tu pomieszałem, powiedz!źródło
ObjToSource(document.body)
na przykład.ObjToSource(document.body)
tego zrobić z powodu nieskończonej rekurencji. Nawetdocument.body.toSource()
w FireFox zwraca pusty obiekt.document.body
nadal nie jest drukowany. UWAGA.document.body
był tylko skrótem do wskazania pewnych poważnych problemów. Naprawiłeś już najgorsze z nich, a ja już głosowałem. (Chociaż uważam, że inne podejście byłoby w stanie poradzić sobiedocument.body
. Większość odpowiedzi tutaj też by się nie przydała.)Jeśli chcesz wydrukować obiekt na całej długości, możesz użyć
Jeśli chcesz wydrukować obiekt, konwertując go na ciąg, to
źródło
JSON.stringify
kiedy próbujesz połączyć obiekt string. Jeśli używaszconsole.log(object)
, powinno dość wydrukować zawartość obiektuOto sposób, aby to zrobić:
źródło
Potrzebowałem sposobu na rekurencyjne wydrukowanie obiektu, co dostarczyła odpowiedź pagewil (Dzięki!). Zaktualizowałem go trochę, aby zawierał sposób drukowania do pewnego poziomu i dodawał odstępy, aby był odpowiednio wcięty na podstawie obecnego poziomu, na którym się znajdujemy, aby był bardziej czytelny.
Stosowanie:
źródło
Zawsze używam
console.log("object will be: ", obj, obj1)
. w ten sposób nie muszę wykonywać obejścia za pomocą stringify w JSON. Wszystkie właściwości obiektu zostaną ładnie rozszerzone.źródło
Innym sposobem wyświetlania obiektów w konsoli jest
JSON.stringify
. Sprawdź poniższy przykład:źródło
Funkcja Javascript
Obiekt drukowania
przez print_r w JavaScript
źródło
gdzie
object
jest twój przedmiotlub możesz użyć tego w narzędziach Chrome dla programistów, zakładka „konsola”:
console.log(object);
źródło
console.log(Object.keys(object));
chociaż wiem, że drukuje tylko klucze właściwości, to wystarcza mi do moich celów;)Załóż obiekt
obj = {0:'John', 1:'Foo', 2:'Bar'}
Wydrukuj zawartość obiektu
Dane wyjściowe konsoli (Chrome DevTools):
Mam nadzieję, że to pomaga!
źródło
Wolę używać
console.table
do uzyskania jasnego formatu obiektu, więc wyobraź sobie, że masz ten obiekt:A poniżej zobaczysz schludny i czytelny stół:
źródło
Mała funkcja pomocnicza, której zawsze używam w swoich projektach do prostego i szybkiego debugowania za pomocą konsoli. Inspiracja zaczerpnięta z Laravela.
Stosowanie
dd(123.55);
wyjścia:źródło
Możesz także użyć koncepcji literału szablonu ES6, aby wyświetlić zawartość obiektu JavaScript w formacie ciągu.
źródło
użyłem metody drukowania pagewil i działało to bardzo ładnie.
oto moja nieco rozszerzona wersja z (niechlujnymi) wcięciami i wyraźnymi ogranicznikami prop / ob:
źródło
Kolejna modyfikacja kodu pagewils ... jego nie drukuje niczego poza ciągami znaków i pozostawia puste pola liczbowe i boolowskie, a ja poprawiłem literówkę na drugim typie bezpośrednio w funkcji utworzonej przez megaboss.
źródło
Oto funkcja.
Może pokazywać obiekt za pomocą wcięcia tabulatora z czytelnością.
źródło