Javascript 从对象中移除任意属性,当所述属性被抽象为字符串时
假设我有一个属性为a、b、c的对象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] 这相当于
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你说得对,我将试着编辑我的问题以使其更清楚。谢谢,这正是我想要的。我知道新的对象创建,这就是为什么我想在可能的情况下使用解构,如果在我的问题中不清楚的话,很抱歉。