javascript - 具有自身默认值的对象解构赋值

标签 javascript ecmascript-6 object-destructuring

我需要破坏一个对象,其中某些变量可能已经有值。

let foo = 1, bar, baz = 'Hello';

const config = { foo: 42 };

({ foo, bar, baz } = config);

console.log({ foo, bar, baz });

这给了我

{
  "foo": 42,
  "bar": undefined,
  "baz": undefined
}

但我真正想要的是

{
  "foo": 42,
  "bar": undefined,
  "baz": "Hello"
}

如果config中有同名值,我想重写该值,如果没有,则使用其原始值。

我无法在解构时分配默认值,因为这些值是之前分配的。

({ foo = 1, bar, baz = 'Hello' } = config);

我知道我可以这样分配它,但它太笨重了,因为有超过 20 个变量。

({ foo = foo, bar = bar, baz = baz } = config);

有没有更好的方法来编写它而不需要一直重复x = x

最佳答案

使用原始值(默认值)创建一个对象,并将config传播到其中,覆盖默认值,然后对其进行解构:

let foo = 1, bar, baz = 'Hello';

const config = { foo: 42 };

({ foo, bar, baz } = { foo, bar, baz, ...config });

console.log({ foo, bar, baz });

关于javascript - 具有自身默认值的对象解构赋值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66038397/

相关文章:

javascript - 如何访问函数内的变量

javascript - 使用 Aurelia 有条件地显示 Element

javascript - 什么是解构赋值及其用途?

javascript - 解构一个对象并创建带有键名的变量 Javascript

javascript - 将 Javascript getter 作为参数传递

javascript - 为什么在声明的对象上解构 ES6 会出现问题?

javascript - 如何在函数定义中使用 ES6 多个解构参数?

javascript - 为什么|和 ||类似于 Javascript 中的分号?

JavaScript 数组比较的正式标准定义

javascript - AngularJS - 解码字节数组并播放音频文件(Wav/MP3)