如何将默认值分配给作为函数参数传递的对象的所有未定义属性



我有一个函数,它接受一个对象作为参数。对象的属性默认值已确定。我希望给定参数的缺失项被分配相应的默认值。然而,到目前为止,我的函数参数只返回在函数调用中给定的条目。

我的尝试

function x(obj1 = {foo: 'bar', fizz: 'buzz'}) {
console.log(obj1);
}
x({foo: 10}); // {foo: 10}

function y(obj2 = ({foo: 'bar'}, {fizz: 'buzz'})) {
console.log(obj2);
}
y({foo: 20}); // {foo: 20}

function z(obj3 = ({foo: foo} = {foo: 'bar'}, {fizz: fizz} = {fizz: 'buzz'})) {
console.log(obj3)
}

z({foo: 30}); // {foo: 30}

我的目标

function f(/* <{foo: 'bar', fizz: 'buzz'}> */) {
console.log(/* <obj> */);
}
f({foo: 40}); // {foo: 40, fizz: 'buzz'}

尝试排列运算符:

function x(obj1 = {}) {
let defaultObj =  {foo: 'bar', fizz: 'buzz',...obj1};  
console.log(defaultObj);
}
x({foo: 10});

其工作原理是:let x = {a: 1, b: 1, a:2}将导致x = { a: 2 , b : 1},这意味着稍后定义的属性将覆盖之前的属性(使用相同的键(。

在函数参数中使用Object destructuring

function test({foo = 'bar', fizz = 'buzz'}) {
console.log({foo, fizz});
}
test({foo: 40});
test({foo: 50, fizz: "abcde"});

检查文档

相关内容

  • 没有找到相关文章

最新更新