簡體   English   中英

在javascript中打印像console.log這樣的對象(有很多信息)

[英]Print Object like console.log (with a lot of information) in javascript

我需要發送一封包含 JS 對象的console.log輸出的電子郵件。 這是一個代碼示例:

let array_multi = [];
array_multi["07:00"] = ["one","two","three"];
array_multi["08:00"] = ["foo","bar","foo"];
array_multi["09:00"] = ["lorem"];
console.log(array_multi);

在我的控制台結果是這樣的:

在此處輸入圖片說明

是否有某種方法可以以純文本形式獲取此輸出,還是應該編寫自定義解析函數?

如果您使用JSON.stringify ,您將獲得完整的數據,但有一些缺點:

  • 數組字符串屬性、函數和其他數據結構將被完全忽略(因此按原樣序列化您的數據將不起作用¹)
  • 循環引用無法序列化
  • 沒有辦法從中看出繼承

在你的情況下,你可以這樣做:

 let array_multi = {}; array_multi["07:00"] = ["one","two","three"]; array_multi["08:00"] = ["foo","bar","foo"]; array_multi["09:00"] = ["lorem"]; // logs as object console.log(array_multi); console.log(typeof array_multi); // parse and convert to string console.log(JSON.stringify(array_multi)); console.log(typeof JSON.stringify(array_multi));


在 Node.js 中,您有另一個選項,即util.format ,它將返回與您可以在 Node.js 控制台中看到的字符串相同的內容。 雖然它確實讓您深入了解不同的數據類型和關系,但它無法向您顯示交互式控制台能夠顯示的相同無限樹,因此它只能向您顯示全局的一小部分。


¹:你的array_multi實際上應該是一個對象,而不是一個數組,因為數組應該只有數字鍵。

經過大量搜索,正確的方法是編寫自定義函數(chrome 在開發工具核心中有一次)
這里的解決方案:

 let array_multi = []; array_multi["07:00"] = ["one","two","three"]; array_multi["08:00"] = ["foo","bar","foo"]; array_multi["09:00"] = ["lorem"]; function print_js_element(elm, show_content = false){ let output_res = "{\\n"; let object_keys = Object.keys(elm); object_keys.some(function(key,index) { output_res += "\\t" + key + ": (" + elm[key].length + ")"; if(show_content){ output_res += " " + JSON.stringify(elm[key]); } output_res += "\\n"; }); output_res += "\\n}"; return output_res; } console.log(print_js_element(array_multi,false)); console.log(print_js_element(array_multi,true));

首先將此數組轉換為對象:

 let array_multi = []; array_multi["07:00"] = ["one","two","three"]; array_multi["08:00"] = ["foo","bar","foo"]; array_multi["09:00"] = ["lorem"]; let arrObj = {...array_multi}; console.log(JSON.stringify(arrObj));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM