Как я могу отобразить объект JavaScript? - PullRequest
1426 голосов
/ 05 июня 2009

Как отобразить содержимое объекта JavaScript в строковом формате, например, когда мы alert переменная?

Тот же форматированный способ отображения объекта.

Ответы [ 36 ]

1853 голосов
/ 27 ноября 2010

Использовать собственный метод 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 и другие примеры.

obj = JSON.parse(str); // Reverses above operation (Just in case if needed.)

Используйте пользовательский JSON.stringify replacer , если вы столкнуться с этой ошибкой Javascript

"Uncaught TypeError: Converting circular structure to JSON"
900 голосов
/ 05 июня 2009

Если вы хотите напечатать объект в целях отладки, используйте код:

var obj = {prop1: 'prop1Value', prop2: 'prop2Value', child: {childProp1: 'childProp1Value'}}
console.log(obj)

будет отображаться:

screenshot console chrome

Примечание: вы должны только зарегистрировать объект. Например, это не будет работать:

console.log('My object : ' + obj)
378 голосов
/ 05 июня 2009
var output = '';
for (var property in object) {
  output += property + ': ' + object[property]+'; ';
}
alert(output);
113 голосов
/ 03 июня 2014

console.dir(object):

Отображает интерактивный список свойств указанного объекта JavaScript. Этот список позволяет использовать раскрывающие треугольники для проверки содержимого дочерних объектов.

Обратите внимание, что функция console.dir() является нестандартной. См. MDN Web Docs

.
69 голосов
/ 12 августа 2015

попробуйте это:

console.log(JSON.stringify(obj))

Это напечатает строковую версию объекта. Таким образом, вместо [object] в качестве вывода вы получите содержимое объекта.

64 голосов
/ 05 июня 2009

Ну, Firefox (спасибо @Bojangles за подробную информацию) имеет метод Object.toSource(), который печатает объекты как JSON и function(){}.

Этого достаточно для большинства целей отладки, я думаю.

50 голосов
/ 09 сентября 2010

Если вы хотите использовать оповещение, чтобы напечатать ваш объект, вы можете сделать это:

alert("myObject is " + myObject.toSource());

Должно быть напечатано каждое свойство и соответствующее ему значение в строковом формате.

33 голосов
/ 15 июля 2013

В NodeJS вы можете распечатать объект, используя util.inspect(obj). Обязательно укажите глубину, иначе у вас будет только мелкий отпечаток объекта.

32 голосов
/ 26 марта 2015

Если вы хотите видеть данные в табличном формате, вы можете использовать

console.table(obj);

Таблицу можно отсортировать, если щелкнуть столбец таблицы.

Вы также можете выбрать, какие столбцы показывать:

console.table(obj, ['firstName', 'lastName']);

Вы можете найти больше информации о console.table здесь

31 голосов
/ 16 ноября 2011

Функция:

var print = function(o){
    var str='';

    for(var p in o){
        if(typeof o[p] == 'string'){
            str+= p + ': ' + o[p]+'; </br>';
        }else{
            str+= p + ': { </br>' + print(o[p]) + '}';
        }
    }

    return str;
}

Использование:

var myObject = {
    name: 'Wilson Page',
    contact: {
        email: 'wilson@hotmail.com',
        tel: '123456789'
    }  
}

$('body').append( print(myObject) );

Пример:

http://jsfiddle.net/WilsonPage/6eqMn/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...