【问题标题】:Object destructuring with property names that are not valid variable names使用不是有效变量名称的属性名称进行对象解构
【发布时间】:2016-08-03 07:40:05
【问题描述】:

有谁知道您是否可以在属性名称中使用带有空格的对象解构?也许这无法完成,我意识到 JavaScript 表示法不正确,但我无法更改服务器 json 响应。

var obj1 = {name: 'Mr Smith', age: 21};
//destructure
var {name, age} = obj1;
//name='Mr Smith' and age=21

这按预期工作。

但是当我有以下对象结构时,我可以使用对象解构吗?

var obj2 = {"my name": "Mr Jones", age: 22};
var {'my name', age} = obj2; 

如果这是不可能的,如果我可以用某种语法来分配变量,比如“as”,那就太好了......

var {'my name' as name, age} = obj2; //name='Mr Jones';

谢谢

【问题讨论】:

标签: typescript ecmascript-6 destructuring


【解决方案1】:

您可以使用以下语法为其分配一个有效的变量名:

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

// use myName here

【讨论】:

【解决方案2】:

当我有一个属性名称中有空格的对象时,我可以使用对象解构吗?

是的,您可以使用解构,但您始终只能分配给标识符(变量名)。由于不允许使用空格,因此您不能使用属性名称和标识符相同的速记语法。

如果我可以用某种语法如“as”来分配变量,那就太好了:

var {'my name' as name, age} = obj2;

as 用于模块导入/导出。对于普通对象——文字和解构——你使用冒号::

var {'my name': name, age} = obj2;

【讨论】:

  • 我使用 'as' 关键字来导入模块 我认为在解构对象时存在某种类似的语法......不过感谢您的解释 :)
  • 有趣,从来不知道这个!可惜没有办法动态解构一个对象,类似于PHP的extract(),还是有?
  • @IfediOkonkwo 动态变量名称是一个皮塔饼。实际上是 JS has them - 但你真的不想使用它。更好地使用计算属性名称并解构为已知变量。
猜你喜欢
  • 2011-11-29
  • 2011-02-25
  • 2016-12-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多