如何利用ES6语法基于原对象创建指定结构的新独立对象?
嘿,针对你要从 original 创建 modified 这个指定结构的独立新对象的需求,用 ES6+ 语法有几种很顺手的实现方式,我给你拆解下:
实现方式
方法一:解构赋值 + 对象扩展运算符(推荐)
这种方式最直观,一步就能完成「排除不需要的属性」和「修改目标属性值」的操作,而且创建的是完全独立的新对象,不会和原对象有引用关联:
const original = { first: 1, second: 2, third: 3 }; // 先通过解构把不需要的second剥离出来,剩下的rest就是 { first: 1, third: 3 } const { second, ...rest } = original; // 扩展rest的同时重写first的值,直接得到目标对象 const modified = { ...rest, first: 100 }; // 最终结果:modified = { first: 100, third: 3 }
要是你想写得更紧凑,也可以合并成一行,但分两行的写法可读性更高,日常开发更推荐前者。
方法二:Object.assign 结合属性删除
如果你更习惯用 Object.assign,也可以这样实现:
const original = { first: 1, second: 2, third: 3 }; // 先复制原对象到新空对象,同时覆盖first的值 const modified = Object.assign({}, original, { first: 100 }); // 删除不需要的second属性 delete modified.second;
这种方式也能达成目标,但相比第一种多了一步删除操作,可读性稍弱一些。
小提醒
两种方式创建的 modified 都是完全独立于原对象的新对象——因为你的属性都是数字这种基础类型,浅拷贝就足够了;如果原对象里有引用类型的属性(比如嵌套对象),那可能需要考虑深拷贝,但你的场景里完全不用操心这个~
内容的提问来源于stack exchange,提问作者bugs
相关产品推荐
相关产品推荐

