在javascript中打印像console.log这样的对象(有很多信息)

r1s*_*1si 1 javascript google-chrome node.js

我需要发送一封包含console.logJS 对象输出的电子邮件。这是一个代码示例:

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);
Run Code Online (Sandbox Code Playgroud)

在我的控制台结果是这样的:

在此处输入图片说明

是否有某种方法可以以纯文本形式获取此输出,还是应该编写自定义解析函数?

Nin*_*liu 5

如果您使用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));
Run Code Online (Sandbox Code Playgroud)


在 Node.js 中,您有另一个选项,即util.format,它将返回与您可以在 Node.js 控制台中看到的字符串相同的内容。虽然它确实让您深入了解不同的数据类型和关系,但它无法向您显示交互式控制台能够显示的相同无限树,因此它只能向您显示全局的一小部分。


¹:您array_multi实际上应该是一个对象,而不是数组,因为数组应该只有数字键。

  • 是的,对不起,我看到了。(我没有投反对票。)我认为这可能是 OP 能做的最好的事情,但应该注意的是,并非所有对象图都可以序列化为 JSON。(好吧,我猜下一步将是自定义序列化程序。) (2认同)