在编程中,"突变"(mutation)通常指的是改变数据的状态。在JavaScript等语言中,对象是可变的,这意味着你可以直接修改它们的属性。然而,在某些情况下,你可能希望删除对象中的某个值而不改变原始对象,即不发生突变。这通常在函数式编程或需要避免副作用的场景中出现。
对象(Object)是JavaScript中的一种数据结构,它允许你存储键值对(properties)。例如:
let obj = {
name: 'Alice',
age: 30
};
有几种方法可以从对象中删除值而不发生突变:
Object.keys()
获取对象的所有键,然后使用 reduce()
创建一个新对象,排除指定的键。Object.keys()
获取对象的所有键,然后使用 reduce()
创建一个新对象,排除指定的键。如果你在尝试删除对象中的值时遇到了问题,可能是因为以下原因:
delete
操作可能不会按预期工作。解决方法:
Object.getOwnPropertyDescriptor()
检查属性的可配置性。let obj = {
name: 'Alice',
age: 30
};
// 使用Object.assign()
let newObj = Object.assign({}, obj);
delete newObj.age;
console.log(newObj); // { name: 'Alice' }
// 使用展开运算符
newObj = { ...obj };
delete newObj.age;
console.log(newObj); // { name: 'Alice' }
// 使用reduce()
newObj = Object.keys(obj).reduce((acc, key) => {
if (key !== 'age') {
acc[key] = obj[key];
}
return acc;
}, {});
console.log(newObj); // { name: 'Alice' }
参考链接:
领取专属 10元无门槛券
手把手带您无忧上云