【问题标题】:Destructuring Object with Enum in Javascript在Javascript中使用枚举解构对象
【发布时间】:2018-09-30 08:50:50
【问题描述】:

我试图找到一种方法,在 ES6 中使用另一个对象 (Eum) 的键来解构对象的键并创建变量。例如我的枚举是

const KEYS = {
  name:'name',
  family:'age'
}

我的对象是:

const myObject = {
  name:'John',
  family:'Doe'
}

而我想要的是用KEYS 的键解构myObject 我知道下面的代码是错误的,但是是这样的:

 const {KEYS.name} = myObject

所以它创建了一个名为 name 的变量,它是 KYES.name 的值,但正如我所说的,它引发了语法错误。有没有人对带有枚举的解构对象有想法。

【问题讨论】:

  • 您实际上是在寻找动态变量名。虽然 eval 可以实现,但这是一个非常糟糕的主意 - 找出更好的方法来实现您的目标。
  • 你不能这样做(eval 或其表亲new Function 除外)。但更重要的是,你为什么要这样做?有一个动态变量名有什么可能的用途?您在这里的基本目标是什么?

标签: javascript ecmascript-6 destructuring


【解决方案1】:

您可以使用computed property names 和object property assignment pattern [YDKJS: ES6 & Beyond]。

name 是window 的保留属性,更改它可能会导致意外结果。

const
    KEYS = { name: 'name', family: 'age' },
    myObject = { name:'John', family:'Doe' };

({ [KEYS.name]: window[KEYS.name] } = myObject);
 
console.log(name);

【讨论】:

  • 这不是 OP 所说的他想要做的。
  • 动态变量名确实是个坏主意(正如我在 cmets 中所说),但同样,这是在回答 OP 没有提出的问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-20
  • 2012-03-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多