Используйте родной JSON.stringify
метод. Работает с вложенными объектами, и все основные браузеры поддерживают этот метод.
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()
Ссылка на Mozilla API Reference и другие примеры.
obj = JSON.parse(str); // Reverses above operation (Just in case if needed.)
Используйте пользовательский заменитель JSON.stringify, если вы столкнулись с этой ошибкой Javascript
"Uncaught TypeError: Converting circular structure to JSON"
Sandeep
источник
источник
console.log
т.е.console.log(JSON.stringify(obj,null, 4));
{}
непустой объект. Поэтому не забудьте проверить,console.log(obj)
прежде чем думать, что ваш объект пуст, когдаstrigify()
возвращается{}
.Ответы:
источник
console.dir(object)
:Обратите внимание, что эта
console.dir()
функция нестандартная. Смотрите MDN Web Docsисточник
console.dir
является то, что вы можете расширять и читать значения в консоли после того, как переменная была собрана сборщиком мусора. Это описано в другой SO статье здесьconsole.dir
заключается в том, что при сохранении консоли в файл все свойства находятся в файле, как и ожидалось. Этого не происходит при использовании только console.log.попробуй это :
Это напечатает строковую версию объекта. Таким образом, вместо
[object]
вывода вы получите содержимое объекта.источник
typeerror: Converting circular structure to JSON
?Что ж, Firefox (спасибо @Bojangles за подробную информацию) имеет
Object.toSource()
метод, который печатает объекты как JSON иfunction(){}
.Я полагаю, этого достаточно для большинства целей отладки.
источник
.toSource()
на самом деле только Firefox . Просто подумал, что дам тебе знать.Если вы хотите использовать оповещение, чтобы напечатать ваш объект, вы можете сделать это:
alert("myObject is " + myObject.toSource());
Он должен печатать каждое свойство и соответствующее ему значение в строковом формате.
источник
Если вы хотите видеть данные в табличном формате, вы можете использовать
Таблица может быть отсортирована, если вы нажмете на столбец таблицы.
Вы также можете выбрать, какие столбцы показывать:
Вы можете найти больше информации о console.table здесь
источник
В NodeJS вы можете распечатать объект с помощью
util.inspect(obj)
. Обязательно укажите глубину, иначе у вас будет только мелкий отпечаток объекта.источник
Функция:
Применение:
Пример:
http://jsfiddle.net/WilsonPage/6eqMn/
источник
Просто использовать
пример
Или
Кроме того, примечание в функциях JavaScript рассматривается как объекты.
В качестве дополнительной заметки:
На самом деле вы можете назначить новое свойство как это и получить к нему доступ к console.log или отобразить его в оповещении
источник
Использовать этот:
источник
Как было сказано ранее, лучший и самый простой способ, который я нашел, был
источник
navigator
.Чтобы напечатать полный объект с Node.js с цветами в качестве бонуса:
Цвета, конечно, необязательны, 'глубина: ноль' напечатает полный объект.
Опции не поддерживаются в браузерах.
Ссылки:
https://developer.mozilla.org/en-US/docs/Web/API/Console/dir
https://nodejs.org/api/console.html#console_console_dir_obj_options
источник
NB. В этих примерах yourObj определяет объект, который вы хотите исследовать.
Прежде всего, мой наименее любимый, но наиболее используемый способ отображения объекта:
Это дефактный способ отображения содержимого объекта.
будет производить что-то вроде:
Я думаю, что лучшее решение - просмотреть ключи объектов, а затем значения объектов, если вы действительно хотите увидеть, что содержит объект ...
Он выведет что-то вроде: (на рисунке выше: ключи / значения, хранящиеся в объекте)
Существует также эта новая опция, если вы используете ECMAScript 2016 или новее:
Это даст аккуратный вывод: решение, упомянутое в предыдущем ответе:
console.log(yourObj)
отображает слишком много параметров и является не самым удобным способом отображения нужных вам данных. . Вот почему я рекомендую регистрировать ключи, а затем значения отдельно.Следующий :
Кто-то в более раннем комментарии предложил это, однако это никогда не работало для меня. Если это работает для кого-то еще в другом браузере или что-то еще, тогда слава! Я все еще положил код здесь для справки! Будет выводить что-то вроде этого на консоль:
источник
console.table(yourObj)
работал для меня на Google Chrome версии 77.0.3865.90 (Официальная сборка) (64-разрядная версия). Спасибо, что поделился!(Это было добавлено в мою библиотеку на GitHub )
Изобретая колесо здесь! Ни одно из этих решений не помогло в моей ситуации. Итак, я быстро подправил ответ wilsonpage . Этот не для печати на экран (через консоль или текстовое поле или что-то еще). В этих ситуациях он отлично работает и работает так, как того требует OP
alert
. Многие ответы здесь не относятся к использованиюalert
в соответствии с запросом OP. Во всяком случае, однако, он отформатирован для передачи данных. Эта версия, кажется, возвращает очень похожий результат, какtoSource()
. Я не проверялJSON.stringify
, но я предполагаю, что это примерно то же самое. Эта версия больше похожа на poly-fil, поэтому вы можете использовать ее в любой среде. Результатом этой функции является допустимое объявление объекта Javascript.Я не сомневаюсь, что что-то подобное уже было где-то на SO, но сделать это было короче, чем тратить время на поиск ответов в прошлом. И так как этот вопрос был моим главным хитом в Google, когда я начал искать об этом; Я подумал, что это может помочь другим.
В любом случае, результатом этой функции будет строковое представление вашего объекта, даже если ваш объект имеет встроенные объекты и массивы, и даже если эти объекты или массивы имеют даже дополнительные встроенные объекты и массивы. (Я слышал, что вы любите пить? Итак, я поставил вашу машину на кулер. А потом я поставил на вашу машину кулер. Итак, ваш кулер может пить, пока вы остываете).
Массивы хранятся
[]
вместо{}
и, следовательно, не имеют пар ключ / значение, только значения. Как обычные массивы. Следовательно, они создаются как массивы.Кроме того, все строки (включая имена ключей) заключены в кавычки, в этом нет необходимости, если только эти строки не имеют специальных символов (например, пробел или косая черта). Но я не хотел обнаруживать это, просто чтобы удалить некоторые цитаты, которые в противном случае работали бы нормально.
Эту результирующую строку можно затем использовать
eval
или просто выгружать в манипуляции с различными строками. Таким образом, воссоздавая ваш объект снова, из текста.Дайте мне знать, если я все испортил, в моем тестировании все работает отлично. Кроме того, единственный способ определить тип
array
- это проверить наличиеlength
. Поскольку Javascript действительно хранит массивы как объекты, я не могу проверить типarray
(такого типа нет!). Если кто-нибудь знает лучший способ, я бы хотел услышать это. Потому что, если у вашего объекта также есть свойство с именем,length
эта функция будет ошибочно рассматривать его как массив.РЕДАКТИРОВАТЬ: Добавлена проверка для объектов с нулевым значением. Спасибо Брок Адамс
РЕДАКТИРОВАТЬ: ниже фиксированная функция, чтобы иметь возможность печатать бесконечно рекурсивные объекты. Это не печатает так же, как
toSource
из FF, потомуtoSource
что однажды напечатает бесконечную рекурсию, где, как, эта функция немедленно убьет ее. Эта функция работает медленнее, чем приведенная выше, поэтому я добавляю ее сюда вместо редактирования вышеупомянутой функции, так как она нужна только в том случае, если вы планируете передавать объекты, которые ссылаются на себя, где-нибудь.Тестовое задание:
Результат:
ПРИМЕЧАНИЕ. Попытка печати
document.body
является ужасным примером. Например, FF просто печатает пустую строку объекта при использованииtoSource
. И при использовании функции выше, FF падает наSecurityError: The operation is insecure.
. И Chrome рухнет дальшеUncaught RangeError: Maximum call stack size exceeded
. Понятно, чтоdocument.body
не предназначалось для преобразования в строку. Потому что либо слишком велик, либо против политики безопасности для доступа к определенным свойствам. Если я не испортил что-то здесь, скажи!источник
ObjToSource(document.body)
, например.ObjToSource(document.body)
из-за бесконечной рекурсии. Дажеdocument.body.toSource()
в FireFox возвращает пустой объект.document.body
она по-прежнему недоступна для печати. Смотрите примечание.document.body
был просто ярлык, чтобы указать на некоторые большие проблемы. Вы исправили худшее из них, и я уже проголосовал. (Хотя я действительно считаю, что другой подход мог бы справитьсяdocument.body
. Большинство ответов здесь также не помогло бы.)Если вы хотите напечатать объект во всю длину, можете использовать
Если вы хотите напечатать объект, преобразовав его в строку, то
источник
JSON.stringify
когда вы попытаетесь объединить со строковым объектом. Если вы используетеconsole.log(object)
, это должно довольно распечатать содержимое объектаВот способ сделать это:
источник
Мне нужен был способ рекурсивной печати объекта, который предоставил ответ страницы (спасибо!). Я немного обновил его, чтобы включить способ печати до определенного уровня и добавить интервал, чтобы он был правильно с отступом в зависимости от текущего уровня, на котором мы находимся, чтобы он был более читабельным.
Применение:
источник
Я всегда использую
console.log("object will be: ", obj, obj1)
. таким образом, мне не нужно делать обходной путь с stringify с JSON. Все свойства объекта будут расширены.источник
Другой способ отображения объектов в консоли - с
JSON.stringify
. Проверьте приведенный ниже пример:источник
Функция Javascript
Печать объекта
через print_r в Javascript
источник
где
object
твой объектили вы можете использовать это в chrome dev tools, вкладка "console":
console.log(object);
источник
console.log(Object.keys(object));
хотя я знаю, что печатает только ключи свойств, мне этого достаточно для моих целей;)Предположим, объект
obj = {0:'John', 1:'Foo', 2:'Bar'}
Распечатать содержимое объекта
Консольный вывод (Chrome DevTools):
Надеюсь, это поможет!
источник
Я предпочитаю использовать
console.table
для получения четкого формата объекта, так что представьте, что у вас есть этот объект:И вы увидите аккуратную и читаемую таблицу, подобную этой ниже:
источник
Маленькая вспомогательная функция, которую я всегда использую в своих проектах для простой и быстрой отладки через консоль. Вдохновение взято из Laravel.
Применение
dd(123.55);
выходы:источник
Вы также можете использовать концепцию литерала шаблона ES6 для отображения содержимого объекта JavaScript в строковом формате.
источник
Я использовал метод печати Pagewil, и он работал очень хорошо.
Вот моя слегка расширенная версия с (небрежными) отступами и различными разделителями prop / ob:
источник
Еще одна модификация кода pagewils ... Его не выводит ничего, кроме строк, и оставляет пустыми числовые и логические поля, и я исправил опечатку во втором типе внутри функции, созданной megaboss.
источник
Вот функция.
Он может показывать объект, используя вкладку с удобочитаемостью.
источник