如果您可以使用ES6语法,我发现最干净的方法可以做到这一点,如这里和这里所述:
const data = {
item1: { key: 'sdfd', value:'sdfd' },
item2: { key: 'sdfd', value:'sdfd' },
item3: { key: 'sdfd', value:'sdfd' }
};
const { item2, ...newData } = data;
现在,包含:newData
{
item1: { key: 'sdfd', value:'sdfd' },
item3: { key: 'sdfd', value:'sdfd' }
};
或者,如果您将密钥存储为字符串:
const key = 'item2';
const { [key]: _, ...newData } = data;
在后一种情况下,将转换为,但由于您使用的是赋值,因此需要为赋值指定一个名称。 表示丢弃值。[key]
item2
const
_
更一般地说:
const { item2, ...newData } = data; // Assign item2 to item2
const { item2: someVarName, ...newData } = data; // Assign item2 to someVarName
const { item2: _, ...newData } = data; // Assign item2 to _
const { ['item2']: _, ...newData } = data; // Convert string to key first, ...
这不仅将您的操作减少到单行,而且还不需要您知道其他密钥是什么(您要保留的密钥)。
一个简单的实用程序函数将如下所示:
function removePropFromObject(obj, prop) {
const { [prop]: _, ...rest } = obj
return { ...rest }
}