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

如何用一行代码通过解构赋值从对象提取属性生成新对象?

一行实现解构提取属性生成新对象

现有对象:

let oldObj = {a: 1, b: 2, c: {d: 3}, d: 100, e: 101}

原来的写法是两行:

let {a, b, c: {d}} = oldObj
let convertedObj = {a,b,d} // {a: 1, b: 2, d: 3}

你尝试的写法无效,核心原因是赋值表达式({a,b,c: {d}} = oldObj)的返回值是原对象oldObj,扩展运算符...会把原对象所有属性都展开,自然得不到目标结果。

下面提供两种可行的一行写法:

方法一:利用逗号运算符

let convertedObj = ({a, b, c: {d}} = oldObj, {a, b, d})

逗号运算符会先执行左侧的解构赋值(完成a、b、d的变量赋值),然后返回右侧的对象字面量,最终得到目标对象。

方法二:使用立即执行函数(IIFE)

let convertedObj = (({a, b, c: {d}}) => ({a, b, d}))(oldObj)

这种写法不会在外部作用域生成a、b、d这些临时变量,更干净。函数参数直接解构oldObj,然后返回组装好的目标对象,立即执行即可得到结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 01:05:18