46

Is it possible to print the output in the same line by using console.log() in JavaScript? I know console.log() always returns a new line. For example, have the output of multiple consecutive console.log() calls be:

"0,1,2,3,4,5,"
Aaron Morefield
  • 952
  • 10
  • 18
BBKay
  • 569
  • 2
  • 10
  • 19
  • 1
    possible duplicate of [Chrome JavaScript developer console: Is it possible to call console.log() without a newline?](http://stackoverflow.com/questions/9627646/chrome-javascript-developer-console-is-it-possible-to-call-console-log-withou) – ThreadedLemon Feb 20 '15 at 01:32

13 Answers13

88

In Node.js there is a way: process.stdout

So, this may work:

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

where index is a current data and , is a delimiter.

Also you can check same topic here.

Ivar
  • 6,138
  • 12
  • 49
  • 61
Alex Glukhovtsev
  • 2,491
  • 2
  • 13
  • 11
33

You could just use the spread operator ...

var array = ['a', 'b', 'c'];

console.log(...array);
13

Couldn't you just put them in the same call, or use a loop?

  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
Rinshan Kolayil
  • 1,111
  • 1
  • 9
  • 14
Michael.Lumley
  • 2,345
  • 2
  • 31
  • 53
11

So if you want to print numbers from 1 to 5 you could do the following:

    var array = [];
    for(var i = 1; i <= 5; i++)
    {
       array.push(i);
    }
    console.log(array.join(','));

Output: '1,2,3,4,5'

Array.join(); is a very useful function that returns a string by concatenating the elements of an array. Whatever string you pass as parameter is inserted between all the elements.

Hope it helped!

Mrigank Khemka
  • 119
  • 1
  • 2
8

You can just console.log the strings all in the same line, as so:

console.log("1" + "2" + "3");

And to create a new line, use \n:

console.log("1,2,3\n4,5,6")

If you are running your app on node.js, you can use an ansi escape code to clear the line \u001b[2K\u001b[0E:

console.log("old text\u001b[2K\u001b[0Enew text")
  • 2
    Any reason why that ANSI sequence is so complicated? `console.log("old text\rnew")` does exactly the same thing. – Dan Dascalescu Jun 17 '19 at 07:20
  • 1
    @DanDascalescu While that is true, escape sequences are consistent in behavior throughout terminals. A carriage return *may* have different behavior on other terminal emulators. On most emulators, it only goes to the 0th column and does not clear the line in question unlike the sequence above. –  Jun 18 '19 at 20:06
  • 2
    Great to know the difference! To illustrate that better, you might want to have the older text be longer, e.g. `console.log('old text longer than the new one\u001b[2K\u001b[0Enew text');`. Mentioning that `\u001b` is the Unicode "Escape" character, and a dissection of that cryptic string would help too. – Dan Dascalescu Jun 19 '19 at 06:24
  • To fill out some more specifics (these are all from the article linked by @bitbyte) The All sequences start with ESC (`\u001b` in javascript string) The `[` indicates the start of a Control Sequence Introducer (CSI). Next is `2K` which `CSI n K` clears a line. "If n is 2, clear entire line" Now we start another sequence `CSI n E` "Moves cursor to beginning of the line n lines down." – tsdorsey May 29 '20 at 05:53
4

You can also use the spread operator (...)

console.log(...array);

The "Spread" operator will feed all the elements of your array to the console.log function.

3

You can also do it like this:

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

It's not possible directly in a browser environment. You'll need to create some buffer to hold values that you want to print on the same line.

In previous answers there are examples of using arrays and loops. As an alternative you can solve it functionally:

const print = ((buffer = '') => arg => {
  if (arg !== '\n') {
    buffer += arg
  } else {
    console.log(buffer)
    buffer = ''
  }
})()

print('x')
print('y')
print('z')    
print('\n') // flush buffer

Or you can use object setters

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'
Yevgeny Kozlov
  • 1,151
  • 1
  • 8
  • 11
1

You can print them as an array

if you write:

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

you can get

[1,2,3,4]
Taha Paksu
  • 15,371
  • 2
  • 44
  • 78
1

You Can Use The Spread Operator. The "log" method Prints It's args in a Single Line and You can Give it The Elements of the Array as individual Arguments By Spreading the Array.

console.log(... array);

ax39T-Venom
  • 32
  • 1
  • 5
1

You can use comma delimiter:

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

but if you want commas to show up in the output then you will need to use strings:

console.log('1,','2,','3,','4');
nax3t
  • 117
  • 4
  • 4
  • 50
0

You can do this instead. It's simple.

    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
0

You can use process.stdout.write

Like This in a loop..

process.stdout.write(`${arr[i]} `)
Abhishek
  • 81
  • 6