【问题标题】:Destructure an object and create variable with key names Javascript [duplicate]解构对象并使用键名创建变量 Javascript [重复]
【发布时间】:2018-07-24 06:38:32
【问题描述】:
let data = {"a":1,"b":2};

我想解构这个对象以自动创建 2 个名称等于 key 的变量而不提供名称。 我怎样才能做到这一点?我什至可以在不指定键名的情况下这样做吗?

let {} = data;

console.log(a) 然后应该给1

这可能吗?

我想要这个的原因是因为我有 string , str = `runco​​de -s ${a} ` 我想在运行str 时自动获取“a”的值 即使我将 str 更改为 `runco​​de -s ${data.a} ` 并运行 strdata.a 也不会被 1 替换。我该如何解决这个问题?

【问题讨论】:

  • 这只是个坏主意。假设对象是动态生成的,这意味着变量名也将动态生成。
  • 不,你不能那样做。 with (data) { ... } 是一个声明,它可能会按照您的意愿行事,但缩短代码 this 会大大损害可读性和性能。由于这个原因,只允许在非严格模式下使用with,并且由于这个原因,“自动”解构也是不可能的。
  • 我想要这个的原因是因为我有 string , str = "runco​​de -s ${a}" 并且我想在我运行 str 时自动获取 "a" 的值,即使我将 str 更改为“runco​​de -s ${data.a}”并运行str,data.a 不会被 1 替换。我该如何解决这个问题
  • @user3439399 使用反引号而不是引号...
  • @PatrickRoberts... 它不起作用。因此,我认为我们需要首先创建一个名为“a”的变量,并且只能以这种方式使用它。我错了吗?

标签: javascript object ecmascript-6 destructuring


【解决方案1】:

不确定你想要达到什么目标,但你可以用“老式”的方式做到这一点:

let str = "runcode -s " + data.a;

或 ES6 方式:

let str = `runcode -s ${data.a}`;

带有反引号和 ${obj.prop}。

编辑:这不是回答该主题中提出的海报原始问题。这只是关于如何解决问题的建议。给您带来的不便,我们深表歉意。

【讨论】:

    猜你喜欢
    • 2014-03-26
    • 1970-01-01
    • 2012-09-21
    • 2011-08-29
    • 1970-01-01
    • 1970-01-01
    • 2011-03-10
    • 2021-04-18
    相关资源
    最近更新 更多