Reputation: 741
Does anyone know if you can use object destructuring with spaces in the property name? Maybe this cannot be done and I realize the JavaScript notation is incorrect but I cannot change the server json response.
var obj1 = {name: 'Mr Smith', age: 21};
//destructure
var {name, age} = obj1;
//name='Mr Smith' and age=21
This works as expected.
But when I have the following object structure can I use object destructuring or not?
var obj2 = {"my name": "Mr Jones", age: 22};
var {'my name', age} = obj2;
If this is not possible It would be nice if I could assign the variable with some sort of syntax like 'as'...
var {'my name' as name, age} = obj2; //name='Mr Jones';
Thanks
Upvotes: 40
Views: 7146
Reputation: 665487
When I have an object with spaces in the property name can I use object destructuring or not?
Yes, you can use destructuring, but you can always only assign to identifiers (variable names). As those don't allow spaces, you cannot use the shorthand syntax where property name and identifier are the same.
It would be nice if I could assign the variable with some sort of syntax like 'as':
var {'my name' as name, age} = obj2;
as
is for module imports/exports. For normal objects - both literals and destructuring - you use the colon :
:
var {'my name': name, age} = obj2;
Upvotes: 10
Reputation: 106850
You can assign it a valid variable name using this syntax:
var {"my name": myName, age} = obj2;
// use myName here
Upvotes: 51