如果你都OK使用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 }
}