Javascript 从对象中移除任意属性,当所述属性被抽象为字符串时

Javascript 从对象中移除任意属性,当所述属性被抽象为字符串时,javascript,node.js,ecmascript-6,destructuring,spread-syntax,Javascript,Node.js,Ecmascript 6,Destructuring,Spread Syntax,假设我有一个属性为a、b、c的对象myObject。 如果我想摆脱属性a,我通常可以使用: {a, ...rest} = myObject; 然后使用rest,这样可以避免对象突变 但是,我要处理的是一种情况,即我要删除的属性的名称被抽象为字符串参数。我仍然可以使用括号语法访问所述对象的属性,因此如果: const stringWithThePropertyName = 'whatever'; 那么财产将是: myObject[stringWithThePropertyName] 这相当于

假设我有一个属性为a、b、c的对象
myObject

如果我想摆脱属性
a
,我通常可以使用:

{a, ...rest} = myObject;
然后使用
rest
,这样可以避免对象突变

但是,我要处理的是一种情况,即我要删除的属性的名称被抽象为字符串参数。我仍然可以使用括号语法访问所述对象的属性,因此如果:

const stringWithThePropertyName = 'whatever';
那么财产将是:

myObject[stringWithThePropertyName]
这相当于
myObject.which
. 但是,如果我想从数组中删除所述属性,该怎么办


也就是说,给定一个对象,移除其名称作为字符串参数的任意属性,最好是以不可变的方式,就像我使用通常的spread+destructuring sintax一样。

如果定义变量名将找到的值放入:

const myObject={
福:‘福’,
酒吧:“酒吧”,
巴兹:“巴兹”
};
属性名称为'foo'的常量字符串;
常量{[StringWithPropertyName]:,…rest}=myObject;

控制台日志(rest)为什么不使用
delete
操作符:?@RobinZigmond尽可能避免对象突变,这与我通常使用spread+destructuring的原因相同。啊,好的。我刚刚删除了你的标题和你帖子中的某些行,其中说你想“删除”该属性(与你实际想要的相反,访问一个没有该属性的“子对象”,同时保持原始属性不变)。@RobinZigmond你说得对,我将试着编辑我的问题以使其更清楚。谢谢,这正是我想要的。我知道新的对象创建,这就是为什么我想在可能的情况下使用解构,如果在我的问题中不清楚的话,很抱歉。