У меня проблема с записью содержимого массива внутри объекта. Фактический объект выглядит так:
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 можно прекрасно записывать содержимое массивов, даже когда оно встроено внутри и объект внутри внешнего объекта.
Это способ по умолчанию для некоторого браузера и реализации с отображением слишком сложных или глубоких объектов/массивов с помощью 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));
Если вам нравится Chrome devtools, который сбрасывает ваши объекты json и позволяет вам многое наблюдать, вы можете использовать флаг --inspect
:
node --inspect index.js
После этого консоль предоставит вам URL-адрес, и вам просто нужно скопировать папок в Google Chrome, чтобы пользоваться консолью Google Chrome.
Попробуйте: console.log(JSON.stringify(variable))