gpt4 book ai didi

node.js - 打印数组时奇怪的 node.js console.log() 输出行为

转载 作者:行者123 更新时间:2023-12-04 12:57:38 28 4
gpt4 key购买 nike

我在 node.js v14.13.1 环境中运行的 VSCode(Mac OS) 中有以下一些简单的代码:

let fruits = ['Apple', 'Banana'];
let fruits1 = ['Apple1', 'Banana1'];
console.log(fruits);
console.log(fruits1);
输出行为对我来说似乎很奇怪,它打印:
(2) ['Apple', 'Banana']
或者
(2) ['Apple', 'Banana']
(2) ['Apple1', 'Banana1']
或者
(2) ['Apple', 'Banana']
Canceled
我找不到任何特定的打印模式(除了前两个输出的打印频率高于第三个),所以它似乎“随机决定”输出什么。
但是,此代码在通过 Mac 终端( node my_file.js )执行时始终按预期输出,即:
[ 'Apple', 'Banana' ]
[ 'Apple1', 'Banana1' ]
那是某种 VSCode 错误,还是有一些关于使用 console.log() 打印数组的内容(使用字符串和整数工作得很好)我没有考虑到什么?

最佳答案

您可以尝试的一种解决方案是在执行 console.log 命令时将数组转换为字符串:

let fruits = [['Apple', 'Banana'],['Apple', 'Banana']];
console.log(fruits.toString()); // Apple,Banana,Apple,Banana
console.log('' + fruits); // Apple,Banana,Apple,Banana
console.log(JSON.stringify(fruits)); // [["Apple","Banana"],["Apple","Banana"]]
我喜欢最后一个,因为它使这个数组显示在括号内,即使是多维数组。
但是,我发现的一个问题是在使用正则表达式时,转换为字符串时会丢失附加输出:
let str = 'xyz';
let pat = /y/;
let res = str.match(pat);
console.log(res); // ['y', index: 1, input: 'xyz', groups: undefined]
console.log(res.toString()); // y
console.log('' + res); // y
console.log(JSON.stringify(res)); // ["y"]
我相信这个错误可能是因为调试器在输出发送到调试控制台之前停止了?因此对于另一种解决方案,要么在代码末尾添加一个空行并在那里添加一个断点;这似乎允许在数组上执行多个 console.logs 时生成所有输出。或者,在代码末尾添加:
setTimeout(() => { }, 1000)
这似乎也增加了足够的时间来正确输出数组的所有 console.log。前者的优点是,您可以在调试控制台中展开数组详细信息,直到您继续到代码的末尾,但缺点是您仍然必须选择继续代码才能结束。后者还允许您在输出中扩展对象的详细信息,但仅限于计时器的持续时间。
我还发现,您可以将其中任何一个添加到您的 launch.json 文件中(在适当的 Node 配置对象中,并且不要忘记在行的末尾和/或其中任何一个的末尾添加一个公共(public)行取决于您插入的位置):
"console": "integratedTerminal"
或者:
"console": "externalTerminal"
这些将输出发送到 VS Code 终端 Pane 或外部 cmd 窗口。
最后我还发现,您可以将其添加到 launch.json 中,而不是这些控制台命令中的任何一个:
"outputCapture": "std"
这会将输出保留在调试控制台中。颜色和其他一些消息看起来有点不同,但似乎成功输出数组。

关于node.js - 打印数组时奇怪的 node.js console.log() 输出行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64553205/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com