从一个对象中 delete,一个属性是非常不好的(性能不好),此外,它还会产生很多副作用。
const removeProperty = (target, propertyToRemove) => {
const { [propertyToRemove]: _, ...newTarget } = target;
console.log(propertyToRemove, _) // b 66
return newTarget;
};
const toto = { a: 55, b: 66 };
console.log({...toto}) // { a: 55, b: 66 }
const totoWithoutB = removeProperty(toto, "b");
console.log(totoWithoutB); // { a: 55 }
【代码解释】:
这个函数的功能是从一个对象中移除指定的属性,并返回一个新的对象。具体处理方式如下:
定义一个箭头函数removeProperty,它接受两个参数:target和propertyToRemove。target是要操作的对象,而propertyToRemove是需要从对象中移除的属性名。
在函数体内部,使用解构赋值语法来创建一个新对象newTarget。解构赋值的语法是{ propertyToRemove: _, …newTarget },其中:
…newTarget是剩余属性的收集器,它将target对象中除了propertyToRemove以外的所有属性复制到新对象newTarget中。
函数执行console.log(propertyToRemove),打印出被移除的属性名。
最后,函数返回新的对象newTarget,该对象包含了原始对象target中除了propertyToRemove之外的所有属性。
例如,如果调用removeProperty({a: 1, b: 2}, ‘b’),则输出为’b’,并返回一个新对象{a: 1}。