2017-06-08 274 views
1

我在註銷對象內數組內容時遇到問題。實際的對象看起來像這樣Node.js - console.log不顯示數組中的項目,而是顯示[Object]

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。謝謝你的幫助!

UPDATE

對不起,我忘了補充一點,我在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工作正常,所以它似乎是在節點完全可能的,即使登錄陣列內容當它嵌入在內部並且外部對象內部的對象時。

+0

您正在使用哪種瀏覽器/環境?在Safari 10.1.1中,它顯示正常。 –

+0

例如,nodejs以這種方式記錄它 –

回答

-1

這意味着,不知何故,你的to不是一個數組,它是一個對象。

不可能根據您分享的代碼來判斷髮生的情況。我們需要查看創建這些對象的代碼。

+3

感謝您的快速響應。但我認爲這樣做會更好,因爲它並不建議如何解決問題。但是,關於代碼,目前代碼是最終將從Nodemailer獲得的響應的模擬。所以它是一個純粹的硬編碼對象,但仍然沒有正確記錄第二個數組。 – mikeym

+0

另外,'to'看起來與我接受的陣列非常相似。它當然不是一個對象。 – mikeym

0

與嘗試:console.log(JSON.stringify(variable))

1

這是一些瀏覽器並顯示出的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 

控制檯將然後給你一個網址,你只需要複製粘貼在谷歌瀏覽器享受谷歌瀏覽器的控制檯。

More information on this link

+0

感謝您的建議,但我在節點0.12,目前無法升級。 – mikeym