【问题标题】:Destructuring Objects using Spread [duplicate]使用 Spread 解构对象
【发布时间】:2019-03-31 09:51:08
【问题描述】:

这应该很容易,但我似乎无法正确使用语法。

    var newObject = {a:1,b:2,c:"three"};
    var {...newObject} = newObject;
    console.log(a); // returns undefined

我正在尝试自动解构我的对象。如果我使用它,我可以让它工作

var {a,b,c} = newObject

但我有一些长数组,不想输入所有变量

【问题讨论】:

  • 不可能这样 - 你基本上是在寻找动态变量名,这很糟糕,只有像eval这样的坏黑客才有可能
  • 为什么需要太多变量?请改用循环。
  • newObject.a直接访问对象值有什么问题?
  • 我使用变量的方式不适合循环(我不会对每个变量做同样的事情)。我绝对可以直接访问对象值,这就是我现在正在做的事情,一遍又一遍地编写 newObject 似乎效率低下,所以做我想做的事情似乎仍然有用(但肯定没有必要) .
  • 如果你最后丑化了你的代码,newObject 仍然会被缩小。顺便提一下,但完全不推荐的是 with-do 语句 — developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…

标签: javascript ecmascript-6 spread-syntax


【解决方案1】:

如果没有eval,您将无法动态执行此操作。即使这样,您也可能会静态地使用变量名——它完全没用。你也可以正确解构:

let o = { a: 'a', b: 'b' };
let { a, b } = o;
console.log(a, b);

【讨论】:

    猜你喜欢
    • 2021-04-10
    • 1970-01-01
    • 2019-03-23
    • 1970-01-01
    • 1970-01-01
    • 2020-04-09
    • 2018-11-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多