You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何以对象解构方式精简JS对象属性传递逻辑?

当然没问题!对象解构就是干这个的——能把你这段分散的属性赋值逻辑压缩成一行干净的代码,还完美覆盖所有需求:属性复用、重命名、自定义值、默认值设置,甚至自动忽略不需要的four属性。

直接上单行解决方案:

const dest = (({ one, three, five }) => ({ one, two: "alterTwo", threeish: three, five: five ?? 5 }))(source);

拆解一下这段代码的逻辑:

  • 外层是个立即执行函数,把source传进去当参数
  • 函数内部用对象解构,从source里只取出我们需要的三个属性:one、three、five——不需要的four自动被忽略,不用额外处理
  • 返回的新对象里:
    • one是简写形式,等价于one: one,直接复用解构来的属性值
    • 直接给two赋值自定义的"alterTwo"
    • 把解构来的three重命名为threeish(也就是threeish: three)
    • 用ES2020的**空值合并运算符??**给five设默认值:只有当source.five是undefined或null时,才会用5,逻辑和你原来的三元表达式完全一致,但更简洁

如果你的环境还不支持??,可以换成你原来的判断逻辑,改成:

const dest = (({ one, three, five }) => ({ one, two: "alterTwo", threeish: three, five: five !== undefined ? five : 5 }))(source);

要是觉得立即执行函数有点“花里胡哨”,也可以拆成两行更易读的版本(本质还是用了解构):

const { one, three, five } = source;
const dest = { one, two: "alterTwo", threeish: three, five: five ?? 5 };

这个版本可读性更好,也完全符合你的需求。

内容的提问来源于stack exchange,提问作者tru7

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 04:13:51