【问题标题】:Print an output in one line using console.log()使用 console.log() 在一行中打印输出
【发布时间】:2015-04-21 14:34:12
【问题描述】:

是否可以在 JavaScript 中使用console.log() 在同一行打印输出?我知道console.log() 总是返回一个新行。例如,让多个连续的console.log() 调用的输出为:

"0,1,2,3,4,5,"

【问题讨论】:

标签: javascript


【解决方案1】:

你不能把它们放在同一个调用中,或者使用循环吗?

  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

【讨论】:

    【解决方案2】:

    你可以只 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")
    

    【讨论】:

    • ANSI 序列为何如此复杂? console.log("old text\rnew") 做同样的事情。
    • @DanDascalescu 虽然这是真的,但转义序列在整个终端中的行为是一致的。回车可能在其他终端仿真器上有不同的行为。在大多数模拟器上,它只进入第 0 列,并且不像上面的顺序那样清除有问题的行。
    • 很高兴知道其中的区别!为了更好地说明这一点,您可能希望旧文本更长,例如console.log('old text longer than the new one\u001b[2K\u001b[0Enew text');。提到\u001b 是Unicode“转义”字符,剖析那个神秘的字符串也会有所帮助。
    • 填写更多细节(这些都来自@bitbyte链接的文章)所有序列以ESC开头(javascript字符串中的\u001b[表示控件的开始序列引入器 (CSI)。接下来是2K CSI n K 清除一行。 "如果 n 为 2,则清除整行" 现在我们开始另一个序列 CSI n E "将光标移到行首向下 n 行。"
    【解决方案3】:

    在 Node.js 中有一种方法:process.stdout

    所以,这可能有效:

    process.stdout.write(`${index},`);
    

    其中index 是当前数据,, 是分隔符。

    您也可以查看同一主题here

    【讨论】:

    • 感谢您的回答,我正在摸不着头脑,因为黑客等级不接受我的回答,即使它是正确的,因为我正在使用 console.log(arr.join(' ') );因为它正在换行。
    • 这里也一样。不知道在某些情况下 HackerRankd 有多无聊:D
    • 酷。工作正常。
    【解决方案4】:

    您可以将它们打印为数组

    如果你写:

    console.log([var1,var2,var3,var4]);
    

    你可以得到

    [1,2,3,4]
    

    【讨论】:

      【解决方案5】:

      您可以只使用扩展运算符...

      var array = ['a', 'b', 'c'];
      
      console.log(...array);

      【讨论】:

        【解决方案6】:

        因此,如果您想打印从 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();是一个非常有用的函数,它通过连接数组的元素返回一个字符串。您作为参数传递的任何字符串都会插入到所有元素之间。

        希望对您有所帮助!

        【讨论】:

          【解决方案7】:

          您也可以使用扩展运算符(...)

          console.log(...array);
          

          “Spread”运算符会将数组的所有元素提供给console.log 函数。

          【讨论】:

            【解决方案8】:

            您可以使用展开运算符。 “log”方法将它的参数打印在一行中,您可以通过扩展数组将数组的元素作为单独的参数提供给它。

            console.log(... array);

            【讨论】:

              【解决方案9】:

              您可以使用逗号分隔符:

              console.log(1,2,3,4);
              

              但如果你想在输出中显示逗号,那么你需要使用字符串:

              console.log('1,','2,','3,','4');
              

              【讨论】:

                【解决方案10】:

                你也可以这样做:

                let s = "";
                for (let i = 0; i < 6; i++) {
                  s += i.toString();
                  if (i != 5) {
                    s += ",";
                  }
                }
                console.log(s);

                【讨论】:

                  【解决方案11】:

                  您可以改为这样做。很简单。

                      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
                  

                  【讨论】:

                  【解决方案12】:

                  直接在浏览器环境中是不可能的。您需要创建一些缓冲区来保存要在同一行上打印的值。

                  在之前的答案中有使用数组和循环的示例。作为替代方案,您可以在功能上解决它:

                  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'

                  【讨论】:

                    猜你喜欢
                    • 1970-01-01
                    • 1970-01-01
                    • 2023-02-09
                    • 2014-09-08
                    • 2011-10-22
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    相关资源
                    最近更新 更多