Javascript 使用扩展运算符从ES6中的对象中删除目标参数

Javascript 使用扩展运算符从ES6中的对象中删除目标参数,javascript,typescript,spread-syntax,Javascript,Typescript,Spread Syntax,我正在尝试使用扩展操作符从对象中删除属性。传统上我是这样做的: const original_object = { prop1 : 'string1', prop2: 'string2' }; const { prop1, ...rest } = original_object; 在上述情况下,删除的属性(prop1)将不再存在于rest对象中 假设有一个更复杂的属性我想删除,比如对象中的一个对象 const original_object = { prop1: 'string1'

我正在尝试使用扩展操作符从对象中删除属性。传统上我是这样做的:

const original_object = { prop1 : 'string1', prop2: 'string2' };
const { prop1, ...rest } = original_object;
在上述情况下,删除的属性(prop1)将不再存在于rest对象中

假设有一个更复杂的属性我想删除,比如对象中的一个对象

const original_object = {
    prop1: 'string1'
    prop2: {
        prop3: 'string3',
        prop4: 'string4'
    }
}
const { *remove prop3 of prop2 only here*, ...rest} = original_object;
console.log(prop3); // => 'string3';

最优雅/最简单的解决方案是什么?除了
prop2
中的
prop3
之外,我希望所有内容都包含在对象中,并且结构完全相同

分两步执行-首先将
prop3
解构出来,然后创建一个新对象,将外部对象的其余部分与prop2以及从中移除的prop3结合起来:

const原始对象={
prop1:‘string1’,
提案2:{
prop3:‘string3’,
prop4:‘string4’
}
};
const{prop2:{prop3,…restProp2},…restOrig}=原始_对象;
const newObj={…restOrig,prop2:restProp2};
console.log(prop3);//=>'3′;

console.log(newObj)我对黑客感兴趣,因为每增加一个对象的深度,就需要另一行代码将其重新组合起来。