12

In JS, if I log a string to the console it is not showing properly ?

console.log(uniqueProducts); //
console.log("uniqueProducts:"+uniqueProducts);

result

[ { country: 'Russia', launches: 32 },
  { country: 'US', launches: 23 },
  { country: 'China', launches: 16 } ]
uniqueProducts:[object Object],[object Object],[object Object]
map

So why is [object Object] shown instead of the value? It is like it changes type with string appended?

soundslikeodd
  • 1,078
  • 3
  • 19
  • 32
manuelBetancurt
  • 15,428
  • 33
  • 118
  • 216
  • 2
    You are concatenating an object to string – Eddie Dec 16 '17 at 04:58
  • 1
    And concatenating any to a string converts that into a string. An Object when converted to a string is `[object Object]`, so you first have to parse the object itself, – Deepak Kamat Dec 16 '17 at 05:01
  • Related: [How can I display a JavaScript object?](https://stackoverflow.com/q/957537) – VLAZ Mar 01 '21 at 06:59

3 Answers3

22

You are concatenating an object to string

You can console a string and an object by separating it by comma(,)

you can console.log("uniqueProducts:", uniqueProducts );

Eddie
  • 26,593
  • 6
  • 36
  • 58
10

You are trying to concatenate an object with a string. You can fix it one of two ways:

  1. Remove + from the log call:
console.log("uniqueProducts:", uniqueProducts);
  1. You can use JSON.stringify to print the object as JSON:
console.log("uniqueProducts:", JSON.stringify(uniqueProducts));
kjones
  • 1,339
  • 1
  • 13
  • 28
Sajeetharan
  • 216,225
  • 63
  • 350
  • 396
4

+ concatenates strings but object is not a string.

Use console.dir(obj) to display the content of the object.

MJ Montes
  • 3,234
  • 1
  • 19
  • 21