我需要破坏一个对象,其中某些变量可能已经有值。
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/