【发布时间】:2015-04-21 14:34:12
【问题描述】:
是否可以在 JavaScript 中使用console.log() 在同一行打印输出?我知道console.log() 总是返回一个新行。例如,让多个连续的console.log() 调用的输出为:
"0,1,2,3,4,5,"
【问题讨论】:
标签: javascript
是否可以在 JavaScript 中使用console.log() 在同一行打印输出?我知道console.log() 总是返回一个新行。例如,让多个连续的console.log() 调用的输出为:
"0,1,2,3,4,5,"
【问题讨论】:
标签: javascript
你不能把它们放在同一个调用中,或者使用循环吗?
var one = "1"
var two = "2"
var three = "3"
var combinedString = one + ", " + two + ", " + three
console.log(combinedString) // "1, 2, 3"
console.log(one + ", " + two + ", " + three) // "1, 2, 3"
var array = ["1", "2", "3"];
var string = "";
array.forEach(function(element){
string += element;
});
console.log(string); //123
【讨论】:
你可以只 console.log 字符串都在同一行,这样:
console.log("1" + "2" + "3");
要创建新行,请使用\n:
console.log("1,2,3\n4,5,6")
如果您在 node.js 上运行您的应用程序,您可以使用 ansi escape code 清除 \u001b[2K\u001b[0E 行:
console.log("old text\u001b[2K\u001b[0Enew text")
【讨论】:
console.log("old text\rnew") 做同样的事情。
console.log('old text longer than the new one\u001b[2K\u001b[0Enew text');。提到\u001b 是Unicode“转义”字符,剖析那个神秘的字符串也会有所帮助。
\u001b)[表示控件的开始序列引入器 (CSI)。接下来是2K CSI n K 清除一行。 "如果 n 为 2,则清除整行" 现在我们开始另一个序列 CSI n E "将光标移到行首向下 n 行。"
在 Node.js 中有一种方法:process.stdout
所以,这可能有效:
process.stdout.write(`${index},`);
其中index 是当前数据,, 是分隔符。
您也可以查看同一主题here。
【讨论】:
您可以将它们打印为数组
如果你写:
console.log([var1,var2,var3,var4]);
你可以得到
[1,2,3,4]
【讨论】:
您可以只使用扩展运算符...
var array = ['a', 'b', 'c'];
console.log(...array);
【讨论】:
因此,如果您想打印从 1 到 5 的数字,您可以执行以下操作:
var array = [];
for(var i = 1; i <= 5; i++)
{
array.push(i);
}
console.log(array.join(','));
输出: '1,2,3,4,5'
Array.join();是一个非常有用的函数,它通过连接数组的元素返回一个字符串。您作为参数传递的任何字符串都会插入到所有元素之间。
希望对您有所帮助!
【讨论】:
您也可以使用扩展运算符(...)
console.log(...array);
“Spread”运算符会将数组的所有元素提供给console.log 函数。
【讨论】:
您可以使用展开运算符。 “log”方法将它的参数打印在一行中,您可以通过扩展数组将数组的元素作为单独的参数提供给它。
console.log(... array);
【讨论】:
您可以使用逗号分隔符:
console.log(1,2,3,4);
但如果你想在输出中显示逗号,那么你需要使用字符串:
console.log('1,','2,','3,','4');
【讨论】:
你也可以这样做:
let s = "";
for (let i = 0; i < 6; i++) {
s += i.toString();
if (i != 5) {
s += ",";
}
}
console.log(s);
【讨论】:
您可以改为这样做。很简单。
var first_name = ["Ram", "Sita", "Hari", "Ravi", "Babu"];
name_list = "";
name_list += first_name;
console.log(name_list);
// OR you can just typecast to String to print them in a single line separated by comma as follows;
console.log(first_name.toString());
// OR just do the following
console.log(""+first_name);
// Output: Ram,Sita,Hari,Ravi,Babu
【讨论】:
直接在浏览器环境中是不可能的。您需要创建一些缓冲区来保存要在同一行上打印的值。
在之前的答案中有使用数组和循环的示例。作为替代方案,您可以在功能上解决它:
const print = ((buffer = '') => arg => {
if (arg !== '\n') {
buffer += arg
} else {
console.log(buffer)
buffer = ''
}
})()
print('x')
print('y')
print('z')
print('\n') // flush buffer
或者你可以使用对象设置器
const c = {
buffer: '',
set log(val) {
if (val !== '\n') {
this.buffer += val
} else {
console.log(this.buffer)
this.buffer = ''
}
}
}
c.log = 'foo'
c.log = 42
c.log = 'bar'
c.log = '\n'
【讨论】: