Node.js - console.log не показывает элементы в массиве, а вместо этого показывает [Object]

1

У меня проблема с записью содержимого массива внутри объекта. Фактический объект выглядит так:

   var stuff = { accepted: [ 'item1', 'item2' ],
         rejected: [],
         response: 'Foo',
         envelope: { from: 'The sender', to: ['new item1', 'new item2'] },
         messageId: 'xxxxxxxxxxxxx' } }

console.log показывает элементы первого массива, но второй массив выводится как [Object].

 { accepted: [ 'item1', 'item2' ],
             rejected: [],
             response: 'Foo',
             envelope: { from: 'The sender', to: [Object] },
             messageId: 'xxxxxxxxxxxxx' } } 

Что здесь происходит и как я могу получить элементы второго массива, чтобы показать, когда я console.log. Спасибо за любую помощь!

ОБНОВИТЬ

К сожалению, я забыл добавить, что я работаю исключительно в Node.js, так что это серверный журнал, который должен отображать объект точно так же, как он получен от обратного вызова с помощью прямого console.log, т.е. больше не стягивается.

Я также просто попытался создать еще один случайный объект с подобной структурой, подобной этой.

 var objText = {
      fun: {
        stuff: 'Some stuff',
        list: ['this', 'it', 'takes']
      }
    };

console.log для вышеперечисленного:

{ fun: { stuff: 'Some stuff', list: [ 'this', 'it', 'takes' ] } }

Для меня это похоже на одну и ту же структуру, но console.log работает нормально, поэтому в Node можно прекрасно записывать содержимое массивов, даже когда оно встроено внутри и объект внутри внешнего объекта.

Теги:
object
arrays
console.log

3 ответа

2

Это способ по умолчанию для некоторого браузера и реализации с отображением слишком сложных или глубоких объектов/массивов с помощью console.log. Альтернативой является использование JSON.stringify с помощью console.log:

var stuff = {
  accepted: ['item1', 'item2'],
  rejected: [],
  response: 'Foo',
  envelope: {
    from: 'The sender',
    to: ['new item1', 'new item2']
  },
  messageId: 'xxxxxxxxxxxxx'
}


console.log(JSON.stringify(stuff, null, 4));
0

Если вам нравится Chrome devtools, который сбрасывает ваши объекты json и позволяет вам многое наблюдать, вы можете использовать флаг --inspect:

node --inspect index.js

После этого консоль предоставит вам URL-адрес, и вам просто нужно скопировать папок в Google Chrome, чтобы пользоваться консолью Google Chrome.

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

  • 0
    Спасибо за предложение, но я нахожусь на узле 0.12 и не могу обновить в данный момент.
0

Попробуйте: console.log(JSON.stringify(variable))

Ещё вопросы

Сообщество Overcoder
Наверх
Меню