Как исправить все значения в mongodb? [Дубликат]

Селектор CSS « General Sibling Combinator » может быть использован для того, что вы хотите:

E ~ F {
    property: value;
}

Это соответствует любому элементу F, которому предшествует E ].

1300
задан George Kagan 8 November 2016 в 13:57
поделиться

31 ответ

С Firefox

Если вы хотите напечатать объект для целей отладки, я предлагаю вместо этого установить Firebug для Firefox и использовать код:

console.log(obj)

С Chrome

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

отобразится

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

console.log('My object : ' + obj)
752
ответ дан Legends 19 August 2018 в 19:18
поделиться
  • 1
    Эта функция также работает в Google Chrome при использовании консоли JavaScript (Shift + Control + J или Shift + Control + I, в зависимости от версии Chrome). Также обратите внимание, что console.log(obj1, obj2) работает очень хорошо, поэтому вам не нужно вызывать console.log() для каждого объекта при регистрации нескольких переменных. Кроме того, всегда помните, чтобы удалить все такие вызовы в процессе производства, так как это приведет к поломке браузеров, которые его не реализуют (например, Internet Explorer). – Felix 22 April 2010 в 10:31
  • 2
    Это не работает, он печатает [object Object] – Doug Molineux 13 December 2010 в 22:17
  • 3
    Да, он печатает [object Object], но рядом с ним есть небольшая кнопка expando-toggly, которая позволяет вам проверять содержимое объекта. – hughes 5 July 2011 в 14:46
  • 4
    @hughes это на самом деле может сделать и то, и другое. У меня есть объект, который я создал с помощью: var obj = {& quot; foo & quot; : ложный }; и другой объект, который передается в обратный вызов с сервера, тот, который прошел через обратный вызов, печатает маленькой стрелкой, чтобы вы могли ее открыть, статически созданный просто печатает [объект объекта] без стрелки. Я тоже пытаюсь понять это, любые другие мысли? – benstraw 8 July 2011 в 01:08
  • 5
    console.log("id:"+obj); не будет выводиться правильно, поскольку он выводит строку, как вы ее видите, вам нужно указать ее так: console.log("id:"); console.log(obj); – Anriëtte Myburgh 5 March 2013 в 13:06

Самый простой способ:

console.log(obj);

Или с сообщением:

console.log("object is: %O", obj);

Первый передаваемый вами объект может содержать один или несколько спецификаторов формата. Спецификатор формата состоит из знака процента (%), за которым следует буква, указывающая применяемое форматирование.

Дополнительные спецификации формата

5
ответ дан 3DRobert 19 August 2018 в 19:18
поделиться
  • 1
    Это отличный ответ. Я удивлен, что он был проголосован и не просто отредактирован. Во всяком случае, я теперь отредактировал его. Помогите поднять этот ответ. – user664833 23 January 2018 в 02:58
  • 2
    Очень хорошо! И со ссылкой на все другие опции console.xxx()! Спасибо. – not2qubit 26 February 2018 в 11:30

попробуйте следующее:

console.log(JSON.stringify(obj))

Это приведет к печати строковой версии объекта. Поэтому вместо [object] в качестве вывода вы получите содержимое объекта.

65
ответ дан Abhishek Goel 19 August 2018 в 19:18
поделиться
  • 1
    typeerror: Converting circular structure to JSON? – Kaiden Prince 18 October 2015 в 23:37
  • 2
    @KaidenPrince видит этот ответ за вашу ошибку: stackoverflow.com/questions/4816099/… Вероятно, это элемент DOM в вашем объекте. Если это так, вам лучше всего просто зайти на консоль в Chrome или firefox и проверить там. В противном случае вам придется вырезать все круговые элементы до вызова JSON.stringify, чтобы он работал. – Ace Hyzer 28 October 2015 в 21:55
  • 3
    Решение состоит в том, чтобы просто разделить на две отдельные команды, верьте или нет: console.log (& quot; id: & quot;); console.log (OBJ); – Collin Chaffin 28 March 2017 в 21:57
  • 4
    Почему downvote ?, пожалуйста, объясните причину downvote. – Abhishek Goel 13 May 2017 в 08:40

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

31
ответ дан Aliaksandr Sushkevich 19 August 2018 в 19:18
поделиться

Если вы ищете что-то, что может вернуть префиксную строку любого объекта javascript, проверьте https://github.com/fresheneesz/beautinator . Пример:

var result = beautinator({ "font-size": "26px","font-family": "'Open Sans', sans-serif",color: "white", overflow: "hidden",padding: "4px 4px 4px 8px",Text: { display: "block", width: "100%","text-align": "center", "padding-left": "2px","word-break": "break-word"}})
console.log(result)

Результаты в:

{ "font-size": "26px",
  "font-family": "'Open Sans', sans-serif",
  color: "white", overflow: "hidden",
  padding: "4px 4px 4px 8px",
  Text: { display: "block", width: "100%",
          "text-align": "center", "padding-left": "2px",
          "word-break": "break-word"
  }
}

Он работает даже, если в вашем объекте есть функции.

1
ответ дан B T 19 August 2018 в 19:18
поделиться
var output = '';
for (var property in object) {
  output += property + ': ' + object[property]+'; ';
}
alert(output);
368
ответ дан Ben McCann 19 August 2018 в 19:18
поделиться
  • 1
    Я искал php-стиль foreach() спасибо! – David Yell 18 October 2010 в 16:14
  • 2
    Это то, что я точно хочу. Я использую google maps v3, а directionrenderer возвращает объект. Это имеет четыре элемента и в том, что одно имя объекта меняется, поэтому нам нужно это найти. Для этого этот метод действительно помог. Кроме того, мы можем получить все имена свойств и объектов. Или есть ли другой способ найти имена объектов и свойств? – Jayapal Chandran 28 April 2011 в 15:08
  • 3
    +1, не все javascript запускаются в браузерах или могут быть отлажены в них. – Bill Yang 25 July 2011 в 03:19
  • 4
    Вероятно, вы захотите замаскировать встроенный треск с hasOwnProperty большую часть времени. – John 20 April 2012 в 01:58
  • 5
    Omg - 0: [; 1: o; 2: b; 3: j; 4: e; 5: c; 6: t; 7:; 8: O; 9: b; 10: j; 11: e; 12: c; 13: t; 14:]; – JSideris 20 February 2015 в 09:16

Предположим, что объект obj = {0:'John', 1:'Foo', 2:'Bar'}

Содержимое объекта печати

for (var i in obj){
    console.log(obj[i], i);
}

Консольный выход (Chrome DevTools):

John 0
Foo 1
Bar 2

Надеюсь, что это поможет!

5
ответ дан Bishop 19 August 2018 в 19:18
поделиться

Я использовал метод печати pagewil, и он работал очень хорошо.

здесь моя небольшая расширенная версия с (sloppy) отступов и отдельными разделителями prop / ob:

var print = function(obj, delp, delo, ind){
    delp = delp!=null ? delp : "\t"; // property delimeter
    delo = delo!=null ? delo : "\n"; // object delimeter
    ind = ind!=null ? ind : " "; // indent; ind+ind geometric addition not great for deep objects
    var str='';

    for(var prop in obj){
        if(typeof obj[prop] == 'string' || typeof obj[prop] == 'number'){
          var q = typeof obj[prop] == 'string' ? "" : ""; // make this "'" to quote strings
          str += ind + prop + ': ' + q + obj[prop] + q + '; ' + delp;
        }else{
          str += ind + prop + ': {'+ delp + print(obj[prop],delp,delo,ind+ind) + ind + '}' + delo;
        }
    }
    return str;
};
2
ответ дан bitless 19 August 2018 в 19:18
поделиться

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

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

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

51
ответ дан Garry 19 August 2018 в 19:18
поделиться
  • 1
    toSource () не работает в браузерах без gecko (например, Chrome, Safari) – Yarin 7 March 2011 в 19:59
  • 2
    Однако это отлично работает для Firefox (Gecko). Браузеры COOL !!!! – Vinothkumar Arputharaj 5 July 2011 в 14:18

Небольшая вспомогательная функция, которую я всегда использую в своих проектах для простой и быстрой отладки через консоль. Вдохновение взято из Laravel.

/**
 * @param variable mixed  The var to log to the console
 * @param varName string  Optional, will appear as a label before the var
 */
function dd(variable, varName) {
    var varNameOutput;

    varName = varName || '';
    varNameOutput = varName ? varName + ':' : '';

    console.warn(varNameOutput, variable, ' (' + (typeof variable) + ')');
}

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

dd(123.55); выходов:

var obj = {field1: 'xyz', field2: 2016};
dd(obj, 'My Cool Obj'); 

3
ответ дан George Kagan 19 August 2018 в 19:18
поделиться

Чтобы напечатать полный объект с помощью Node.js с цветами в качестве бонуса:

console.dir(object, {depth: null, colors: true})

Цвета, конечно, необязательны, «depth: null» будет печатать полный object.

Параметры не поддерживаются в браузерах.

Ссылки:

https://developer.mozilla.org/ ru / US / docs / Web / API / Console / dir

https://nodejs.org/api/console.html#console_console_dir_obj_options

17
ответ дан jpoppe 19 August 2018 в 19:18
поделиться

Вот функция.

function printObj(obj) {
console.log((function traverse(tab, obj) {
    let str = "";
    if(typeof obj !== 'object') {
        return obj + ',';
    }
    if(Array.isArray(obj)) {            
        return '[' + obj.map(o=>JSON.stringify(o)).join(',') + ']' + ',';
    }
    str = str + '{\n';
    for(var p in obj) {
        str = str + tab + ' ' + p + ' : ' + traverse(tab+' ', obj[p]) +'\n';
    }
    str = str.slice(0,-2) + str.slice(-1);                
    str = str + tab + '},';
    return str;
}('',obj).slice(0,-1)))};

Он может отображать объект, используя вкладку tab с удобочитаемостью.

2
ответ дан Juho Sung 19 August 2018 в 19:18
поделиться
  • 1
    Уверенный выстрел для разбивки вашего браузера: P – Satadru Biswas 1 August 2017 в 22:32

Мне нужен способ рекурсивной печати объекта, на который предоставлен ответ на страницу (спасибо!). Я немного обновил его, чтобы включить способ печати на определенный уровень, и добавить интервал так, чтобы он был правильно отступом на основе текущего уровня, в котором мы находимся, чтобы он был более читабельным.

// Recursive print of object
var print = function( o, maxLevel, level ) {
    if ( typeof level == "undefined" ) {
        level = 0;
    }
    if ( typeof level == "undefined" ) {
        maxLevel = 0;
    }

    var str = '';
    // Remove this if you don't want the pre tag, but make sure to remove
    // the close pre tag on the bottom as well
    if ( level == 0 ) {
        str = '<pre>';
    }

    var levelStr = '';
    for ( var x = 0; x < level; x++ ) {
        levelStr += '    ';
    }

    if ( maxLevel != 0 && level >= maxLevel ) {
        str += levelStr + '...</br>';
        return str;
    }

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

    // Remove this if you don't want the pre tag, but make sure to remove
    // the open pre tag on the top as well
    if ( level == 0 ) {
        str += '</pre>';
    }
    return str;
};

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

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

// Recursive of whole object
$('body').append( print(pagewilsObject) ); 

// Recursive of myObject up to 1 level, will only show name 
// and that there is a contact object
$('body').append( print(pagewilsObject, 1) ); 
11
ответ дан mmaclaurin 19 August 2018 в 19:18
поделиться

Функция javascript

<script type="text/javascript">
    function print_r(theObj){ 
       if(theObj.constructor == Array || theObj.constructor == Object){ 
          document.write("<ul>") 
          for(var p in theObj){ 
             if(theObj[p].constructor == Array || theObj[p].constructor == Object){ 
                document.write("<li>["+p+"] => "+typeof(theObj)+"</li>"); 
                document.write("<ul>") 
                print_r(theObj[p]); 
                document.write("</ul>") 
             } else { 
                document.write("<li>["+p+"] => "+theObj[p]+"</li>"); 
             } 
          } 
          document.write("</ul>") 
       } 
    } 
</script>

Печать объекта

<script type="text/javascript">
print_r(JAVACRIPT_ARRAY_OR_OBJECT);
</script> 

через print_r в Javascript

4
ответ дан Mukesh Chapagain 19 August 2018 в 19:18
поделиться
  • 1
    Я не уверен, что это ошибка в примере js.do, который я использую, но это, похоже, выводит первую полную «ветвь». дерева. т.е. он следует за первой ссылкой первой ссылки ... ad infinitum – Jon Story 12 February 2015 в 13:47

Я всегда использую console.log("object will be: ", obj, obj1). таким образом, мне не нужно делать обходной путь с помощью строки с JSON. Все свойства объекта будут хорошо расширены.

6
ответ дан nils petersohn 19 August 2018 в 19:18
поделиться

(Это было добавлено в мою библиотеку в GitHub )

Переопределение колеса здесь! Ни одно из этих решений не работало для моей ситуации. Итак, я быстро усовершенствовал ответ страницы. Это не для печати на экран (через консоль, текстовое поле или что-то еще). Это, однако, для переноса данных. Эта версия, похоже, возвращает очень похожий результат, как toSource(). Я не пробовал JSON.stringify, но я предполагаю, что это примерно то же самое. Результатом этой функции является действительное объявление объекта Javascript.

Я бы не сомневался, что что-то подобное уже было на SO где-то, но было просто короче, чем потратить время на поиск прошлых ответов , И поскольку этот вопрос был моим лучшим хитом в google, когда я начал искать об этом; Я полагал, что это может помочь другим.

Во всяком случае результат этой функции будет представлять собой строковое представление вашего объекта, даже если ваш объект имеет встроенные объекты и массивы, и даже если эти объекты или массивы имеют еще больше внедренных объектов и массивов. (Я слышал, что вы любите пить? Итак, я кувал вашу машину с кулером, а потом, я кувал кулер кулером. Итак, ваш кулер может пить, а ваше прохладное.)

Массивы сохраняются с [] вместо {} и, следовательно, не имеют пары ключ / значение, просто значения. Как обычные массивы. Поэтому они создаются как массивы.

Кроме того, вся строка (включая имена ключей) цитируется, это необязательно, если только эти строки не имеют специальных символов (например, пробела или косой черты). Но мне не хотелось обнаруживать это только для того, чтобы удалить некоторые кавычки, которые в противном случае все равно бы работали нормально.

Эта результирующая строка затем может быть использована с eval или просто сбрасывать ее в переменную string , Таким образом, повторное создание объекта снова из текста.

function ObjToSource(o){
    if (!o) return 'null';
    var k="",na=typeof(o.length)=="undefined"?1:0,str="";
    for(var p in o){
        if (na) k = "'"+p+ "':";
        if (typeof o[p] == "string") str += k + "'" + o[p]+"',";
        else if (typeof o[p] == "object") str += k + ObjToSource(o[p])+",";
        else str += k + o[p] + ",";
    }
    if (na) return "{"+str.slice(0,-1)+"}";
    else return "["+str.slice(0,-1)+"]";
}

Сообщите мне, если я все испортил, отлично работает в моем тестировании. Кроме того, единственный способ определить тип array - проверить наличие length. Поскольку Javascript действительно хранит массивы как объекты, я не могу проверить на тип array (такого типа нет!). Если кто-то еще знает лучший способ, я бы хотел его услышать. Потому что, если ваш объект также имеет свойство с именем length, то эта функция будет ошибочно относиться к нему как к массиву.

EDIT: Добавлена ​​проверка для объектов с нулевой оценкой. Спасибо Brock Adams

EDIT: Ниже фиксированная функция, позволяющая печатать бесконечно рекурсивные объекты. Это не печатает то же, что и toSource из FF, потому что toSource будет печатать бесконечную рекурсию один раз, где as, эта функция немедленно ее уничтожит. Эта функция работает медленнее, чем предыдущая, поэтому я добавляю ее здесь вместо редактирования вышеприведенной функции, поскольку она нужна только в том случае, если вы планируете передавать объекты, которые ссылаются на себя где-то.

const ObjToSource=(o)=> {
    if (!o) return null;
    let str="",na=0,k,p;
    if (typeof(o) == "object") {
        if (!ObjToSource.check) ObjToSource.check = new Array();
        for (k=ObjToSource.check.length;na<k;na++) if (ObjToSource.check[na]==o) return '{}';
        ObjToSource.check.push(o);
    }
    k="",na=typeof(o.length)=="undefined"?1:0;
    for(p in o){
        if (na) k = "'"+p+"':";
        if (typeof o[p] == "string") str += k+"'"+o[p]+"',";
        else if (typeof o[p] == "object") str += k+ObjToSource(o[p])+",";
        else str += k+o[p]+",";
    }
    if (typeof(o) == "object") ObjToSource.check.pop();
    if (na) return "{"+str.slice(0,-1)+"}";
    else return "["+str.slice(0,-1)+"]";
}

Тест:

var test1 = new Object();
test1.foo = 1;
test1.bar = 2;

var testobject = new Object();
testobject.run = 1;
testobject.fast = null;
testobject.loop = testobject;
testobject.dup = test1;

console.log(ObjToSource(testobject));
console.log(testobject.toSource());

Результат:

{'run':1,'fast':null,'loop':{},'dup':{'foo':1,'bar':2}}
({run:1, fast:null, loop:{run:1, fast:null, loop:{}, dup:{foo:1, bar:2}}, dup:{foo:1, bar:2}})

ПРИМЕЧАНИЕ. Попытка печати document.body является ужасным примером. Во-первых, FF просто печатает пустую строку объекта при использовании toSource. И при использовании функции выше FF падает на SecurityError: The operation is insecure.. И Chrome рухнет на Uncaught RangeError: Maximum call stack size exceeded. Очевидно, что document.body не предназначалось для преобразования в строку. Потому что он слишком большой или против политики безопасности для доступа к определенным свойствам. Если бы я не испортил что-то здесь, скажи!

9
ответ дан Pimp Trizkit 19 August 2018 в 19:18
поделиться
  • 1
    Склонность к сбоям. Например, попробуйте ObjToSource(document.body). – Brock Adams 29 December 2012 в 00:34
  • 2
    хорошо, я нашел проблему. Я не проверял нулевые объекты. Это исправлено сейчас. Но вы все еще не можете ObjToSource(document.body) из-за бесконечной рекурсии. Даже document.body.toSource() в FireFox возвращает пустой объект. – Pimp Trizkit 29 December 2012 в 01:35
  • 3
    @BrockAdams - теперь он исправлен для бесконечной рекурсии, однако document.body все еще не доступен для печати. Смотрите примечание. – Pimp Trizkit 29 December 2012 в 03:57
  • 4
    document.body был всего лишь ярлыком, чтобы указать на некоторые большие проблемы. Теперь вы исправили худшие из них, и я уже поддержал это. (Хотя, я полагаю, что другой подход может справиться с document.body. Большинство ответов здесь также не преуспели бы в этом). – Brock Adams 29 December 2012 в 04:17
  • 5
    Хорошо, если вы (или кто-либо еще) получили какие-либо идеи о том, как преодолеть тот факт, что такой большой объект будет заполнять стек во время рекурсии или обхода ограничений безопасности. Я хотел бы услышать это. Спасибо за голосование! – Pimp Trizkit 29 December 2012 в 04:21

Другая модификация кода pagewils ... его не печатает ничего, кроме строк, и оставляет число и логические поля пустыми, и я исправил опечатку на втором типе внутри функции, созданной megaboss.

var print = function( o, maxLevel, level )
{
    if ( typeof level == "undefined" )
    {
        level = 0;
    }
    if ( typeof maxlevel == "undefined" )
    {
        maxLevel = 0;
    }

    var str = '';
    // Remove this if you don't want the pre tag, but make sure to remove
    // the close pre tag on the bottom as well
    if ( level == 0 )
    {
        str = '<pre>';   // can also be <pre>
    }

    var levelStr = '<br>';
    for ( var x = 0; x < level; x++ )
    {
        levelStr += '    ';   // all those spaces only work with <pre>
    }

    if ( maxLevel != 0 && level >= maxLevel )
    {
        str += levelStr + '...<br>';
        return str;
    }

    for ( var p in o )
    {
        switch(typeof o[p])
        {
          case 'string':
          case 'number':    // .tostring() gets automatically applied
          case 'boolean':   // ditto
            str += levelStr + p + ': ' + o[p] + ' <br>';
            break;

          case 'object':    // this is where we become recursive
          default:
            str += levelStr + p + ': [ <br>' + print( o[p], maxLevel, level + 1 ) + levelStr + ']</br>';
            break;
        }
    }

    // Remove this if you don't want the pre tag, but make sure to remove
    // the open pre tag on the top as well
    if ( level == 0 )
    {
        str += '</pre>';   // also can be </pre>
    }
    return str;
};
2
ответ дан ppetree 19 August 2018 в 19:18
поделиться

Вы можете использовать мою функцию. Вызов этой функции с помощью массива или строки или объекта, который он предупреждает о содержимом.

Функция

function print_r(printthis, returnoutput) {
    var output = '';

    if($.isArray(printthis) || typeof(printthis) == 'object') {
        for(var i in printthis) {
            output += i + ' : ' + print_r(printthis[i], true) + '\n';
        }
    }else {
        output += printthis;
    }
    if(returnoutput && returnoutput == true) {
        return output;
    }else {
        alert(output);
    }
}

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

var data = [1, 2, 3, 4];
print_r(data);
-2
ответ дан Rayiez 19 August 2018 в 19:18
поделиться

Хорошо, Firefox (благодаря @Bojangles для получения подробной информации) имеет метод Object.toSource() , который печатает объекты как JSON и function(){}.

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

64
ответ дан rink.attendant.6 19 August 2018 в 19:18
поделиться
  • 1
    Object.toSource (), похоже, не работает для Chrome, это ожидалось? Или Chrome не подпадает под «расширенные браузеры»? знак равно – tstyle 13 February 2011 в 13:10
  • 2
    Очевидно, это не так :( – alamar 24 February 2011 в 14:32
  • 3
    Старый поток, только что нашел его через Google. .toSource() на самом деле только Firefox . Просто подумал, что дам тебе знать. – Bojangles 26 August 2011 в 13:14
  • 4
    слишком плохо, у меня Chrome, и он не работает – Nulik 5 January 2018 в 23:54

console.dir(object):

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

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

95
ответ дан Rob Bednark 19 August 2018 в 19:18
поделиться

Использовать собственный метод 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()

Ссылка на Справочник по API Mozilla и другие примеры.

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

Если вы столкнулись с этой ошибкой Javascript

"Uncaught TypeError: Converting circular structure to JSON"
, используйте пользовательский JSON.stringify replacer
1723
ответ дан Robert Harvey 19 August 2018 в 19:18
поделиться
  • 1
    Для получения более читаемого результата попробуйте JSON.stringify (obj, null, 4). Это запишет его как текст с четным отступом – Ben Clayton 5 June 2011 в 13:49
  • 2
    JSON.stringify может отображать только небольшое подмножество значений javascript и будет генерировать исключение для остальных - console.log не имеет этой проблемы. – Marc Lehmann 1 October 2013 в 14:46
  • 3
    Если вы новичок, как я, не забудьте console.log i.e. console.log(JSON.stringify(obj,null, 4)); – nilesh 30 December 2013 в 05:49
  • 4
    & quot; Неприем TypeError: преобразование круговой структуры в JSON & quot; когда on = окно. – Michael 14 January 2014 в 01:04
  • 5
    & GT; В Node.js вы можете использовать util.inspect (object) . Он автоматически заменяет круговые ссылки на «[Циркуляр]». ----- credit: Erel Segal-Halevi в том, что ссылка JSON.stringify replacer – DaveLak 19 December 2017 в 06:16

Возможно, вы ищете этот

console.dir ()

2
ответ дан sandrosanchez 19 August 2018 в 19:18
поделиться

Другой способ отображения объектов в консоли - JSON.stringify. Оформить заказ ниже:

var gandalf = {
  "real name": "Gandalf",
  "age (est)": 11000,
  "race": "Maia",
  "haveRetirementPlan": true,
  "aliases": [
    "Greyhame",
    "Stormcrow",
    "Mithrandir",
    "Gandalf the Grey",
    "Gandalf the White"
  ]
};
//to console log object, we cannot use console.log("Object gandalf: " + gandalf);
console.log("Object gandalf: ");
//this will show object gandalf ONLY in Google Chrome NOT in IE
console.log(gandalf);
//this will show object gandalf IN ALL BROWSERS!
console.log(JSON.stringify(gandalf));
//this will show object gandalf IN ALL BROWSERS! with beautiful indent
console.log(JSON.stringify(gandalf, null, 4));
1
ответ дан Socrates 19 August 2018 в 19:18
поделиться

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

console.log (require ('util'). inspect (obj, {showHidden: false, depth: null})

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

console.log (JSON.stringify (obj));

14
ответ дан sreepurna 19 August 2018 в 19:18
поделиться
  • 1
    JSON.stringify работает для меня. – AMIC MING 17 July 2017 в 19:07
  • 2
    вам нужно будет добавить JSON.stringify при попытке конкатенации с помощью строкового объекта. Если вы используете console.log(object), он должен довольно распечатать содержимое объекта – Satadru Biswas 1 August 2017 в 22:36

Вот как это сделать:

console.log("%o", obj);
2
ответ дан tryzniak 19 August 2018 в 19:18
поделиться
var list = function(object) {
   for(var key in object) {
     console.log(key);
   }
}

, где object - ваш объект

, или вы можете использовать его в инструментах chrome dev, вкладке «console»:

console.log(object);

5
ответ дан user3632930 19 August 2018 в 19:18
поделиться
  • 1
    я не понимаю этого downvotes ... – user3632930 9 March 2015 в 16:43
  • 2
    Я думаю, что ваш ответ неполный. (не меня, что вызывает downvote) Это, однако, только печатать ключ .. – Abdillah 22 April 2015 в 09:13
  • 3
    спасибо за ваш ответ, он вдохновил меня на это: console.log(Object.keys(object));, пока я знаю, что только печатает ключи свойств, для меня это достаточно для моих целей;) – Wilson 5 August 2015 в 15:17
  • 4
    Очень удобно, когда вы пытаетесь проанализировать огромные возвращенные объекты - например, Карты Google. Благодаря! – Pedro Ferreira 26 March 2016 в 19:24

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

console.table(obj);

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

Вы также можете выбрать, что столбцы для отображения:

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

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

28
ответ дан Vlad Bezden 19 August 2018 в 19:18
поделиться

Используйте это:

console.log('print object: ' + JSON.stringify(session));
16
ответ дан Walter Caraza 19 August 2018 в 19:18
поделиться

Функция:

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 /

31
ответ дан wilsonpage 19 August 2018 в 19:18
поделиться
  • 1
    Метод печати вызовите браузер для печати страницы в pdf: p – Marwen Trabelsi 31 May 2015 в 22:42
  • 2
    похоже, не работает для целых чисел – jsh 25 September 2015 в 19:58
  • 3
    @jsh, вы должны включить if-else и проверить объект вместо строки. обновленная скрипка: jsfiddle.net/6eqMn/594 – Michael Walter 15 February 2016 в 17:01
  • 4
    @wilsonpage Это не работает, если я добавляю целочисленное значение для свойства tel :( – ni3 23 August 2017 в 09:20

Как было сказано ранее, самым лучшим способом я нашел

var getPrintObject=function(object)
{
    return JSON.stringify(object);
}
18
ответ дан yonia 19 August 2018 в 19:18
поделиться
  • 1
    Это самое простое и быстрое решение, однако оно не работает на больших объектах, таких как navigator. – someguy234 4 December 2014 в 01:30
Другие вопросы по тегам:

Похожие вопросы: