var test = "test123" var test123 ={ "key" + test: 123 }
This code doesn't work. What is wrong with "key" + test ?
No, JavaScript objects cannot have duplicate keys. The keys must all be unique.
The concat() function concatenates the string arguments to the calling string and returns a new string.
The best and fastest way to concatenate strings in JavaScript is to use the + operator. You can also use the concat() method.
To add multiple key/value pairs to an object in the same statement, use the Object. assign() method. The method copies the key/value pairs of one or more objects into a target object and returns the modified target object.
Because "key" + test
is an expression and not an identifier nor a string literal nor a number literal, which are the only things that are allowed as the key in an object literal.
You have to use the []
notation after creating the object for such a dynamic key:
var test123 = {}; test123["key" + test] = 123;
An identifier is basically the same subset of characters that you can call a variable (letters, numbers, _
and $
; may not start with a number), and a string literal is any string enclosed with '
or "
.
So, the only types of keys you can use in an object literal are:
{ a0: true, // valid identifier $$_: true, // same 123: true, // valid numeric literal 012: true, // same (octal) 0xf: true, // same (hex) "@": true, // not allowed as an identifier '0a': true // same }
Reference: http://es5.github.com/#x11.1.5.
PropertyName :
IdentifierName
StringLiteral
NumericLiteral
With ES6, you can define dynamic keys within an object literal:
const test = "test123" const test123 = { [`key${test}`]: 123 }; //{ keytest123: 123 }
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With