What do you make of this?
var x = {a: 1}; //=> {a: 1}
var y = Object.keys(x); //=> [\'a\']
x[y] //=> 1
Property names have to be strings. If you try to use an array as a property name, it gets its toString() method called implicitly. That generates a string containing a comma-separated list of its values.
> var array = ['a', 'b', 'c'];
undefined
> array.toString();
'a,b,c'
If you only have one value, then there aren't any commas.
> var array = ['a'];
undefined
> array.toString();
'a'