我需要发送一封电子邮件,其中包含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);
在我的控制台中,结果如下:
是否有某种方法可以以纯文本格式获取此输出,还是应该编写自定义解析函数?
答案 0 :(得分:2)
如果您使用的是JSON.strigify,则会获得完整的数据,但是有一些缺点:
您可以这样做:
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));
在NodeJS上,您还有另一个选项util.format,它将返回与在NodeJS控制台中看到的字符串相同的内容。虽然它确实使您可以深入了解不同的数据类型和关系,但是它无法向您显示交互式控制台可以显示的同一棵无限树,因此只能向您展示大图的一小部分。
¹:array_multi
实际上应该是一个对象,而不是一个数组,因为数组应该只具有数字键。
答案 1 :(得分:0)
经过大量搜索之后,正确的方法是编写一个自定义函数(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));
答案 2 :(得分:-1)
首先将此数组转换为对象:
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));