【问题标题】:Function's attributes to object without empty ones [duplicate]没有空对象的函数属性[重复]
【发布时间】:2020-02-03 10:29:17
【问题描述】:

我有一个简单的箭头函数:

const db = (url, type, body?) => ({url, type, body})

如果 body 是空的 db 参数,我不想返回它。

【问题讨论】:

  • 用更多细节正确解释问题
  • 只写一个if条件
  • “空”是指undefined?这正是body 在您想要“省略”它时应该变成的样子——您的代码已经可以工作了!
  • 不,因为在结果对象中有一个条目主体:未定义。此外,正文后的问号在浏览器中不起作用

标签: javascript


【解决方案1】:

求body的值

const db = (url, type, body) => Object.assign({url, type}, (body ? {body} : {}));
console.log(db("Ele", "Stack"));
console.log(db("Ele", "Stack", "mybody"));

【讨论】:

    【解决方案2】:

    你可以这样做:

    const db = (url, type, body) => (body ? {url, type, body} : {url, type})
    

    【讨论】:

    • OP 没有提供有关 body 参数的详细信息,但我猜它是一个对象。所以你必须用 Object.keys() 来检查长度
    • @MaximeGirou 空对象已经不同于“无对象”,您无需为此计算其属性。
    • 可以是任何东西,没关系。 OP提到,如果未提供,则不应退回。如果没有提供,body 将是未定义的,并且将返回正确的对象。但是,确实是 false 或空的 body 对象也会返回短对象
    • 这取决于 OP 在说“空”时的意思。如果是空对象或未定义
    【解决方案3】:

    你可以这样检查

    const db = (url, type, body) => (Object.keys(body).length > 0 ? { url, type, body } : { url, type })
    

    【讨论】:

    • 没有人说身体必须是一个对象。如果没有传递给函数,一个简单的未定义检查就足够了
    猜你喜欢
    • 1970-01-01
    • 2013-04-29
    • 2020-10-03
    • 1970-01-01
    • 1970-01-01
    • 2021-12-04
    • 2021-05-07
    • 2016-09-20
    • 2013-06-25
    相关资源
    最近更新 更多