Object destructuring with property names that are not valid variable names

孤人 提交于 2019-12-17 06:50:26

问题


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


回答1:


You can assign it a valid variable name using this syntax:

var {"my name": myName, age} = obj2; 

// use myName here



回答2:


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;


来源:https://stackoverflow.com/questions/36577568/object-destructuring-with-property-names-that-are-not-valid-variable-names

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!