45

I know you can do this through looping through elements of array and concatenating. But I'm looking for one-liner solutions. toString() and join() returns string with elements separated by commas. For example,

var array = ['apple', 'tree'];
var toString = array.toString()    # Will return 'apple,tree' instead of 'apple tree', same for join() method

6 Answers 6

89

When you call join without any argument being passed, ,(comma) is taken as default and toString internally calls join without any argument being passed.

So, pass your own separator.

var str = array.join(' '); //'apple tree'
// separator ---------^

MDN on Array.join

2
  • its amazing how many times console.log() makes you realize a function doesn't do exactly what you expect...
    – David
    Commented Jan 7, 2016 at 19:02
  • is there a way to display [apple] [tree] instead?
    – Eric Ong
    Commented Sep 12, 2018 at 5:25
5

pass a delimiter in to join.

['apple', 'tree'].join(' '); // 'apple tree'
4

Use the Array.join() method. Trim to remove any unnecessary whitespaces.

var newStr = array.join(' ').trim()

1
  • What if we just do array.join(''). So there is no need to trim. Commented Jan 4, 2021 at 17:38
0

The easiest way is to use .join(' ').

However, if the Array contains zero-length objects like null, the following code would avoid multiple spaces:

arr.filter(i => [i].join(" ").length > 0).join(" ");

Here's some example usage:

Array.prototype.merge = function(char = " ") {
  return this.filter(i => [i].join(" ").length > 0).join(char);
};

console.log(["a", null, null, "b"].merge());
0

If you didn't want to use toString() or join(), you could do something like this:

for(let i=0;i</*Array*/.length;i++)if(/*Variable*/=="")/*Variable*/+=/*Array*/[i];else /*Variable*/+="/*Separator*/"+/*Array*/[i];

Separator is what to put between each item. In your case, you would change that to a space.

0

You could use splice method to add space item to array

var array = ['apple', 'tree'];
 array.splice(1, 0, ' ')

And for convert array to string use built-in methode call join()and the output will be like you want:

array.join('');
// "apple tree"

Not the answer you're looking for? Browse other questions tagged or ask your own question.