从对象中删除值而不进行变异

在不改变原始对象的情况下,从特定键的对象中移除值的好方法是什么

我想做一些类似的事情:

让o={firstname:'Jane',lastname:'Doe'};
设o2=doSomething(o,‘姓’);
console.log(o.lastname);/'母鹿的
console.log(o2.lastname);//未定义

我知道这类任务有很多不变性库,但我希望没有库。但要做到这一点,需要有一种简单快捷的方法,可以在整个代码中使用,而不需要将方法抽象为实用函数

例如,为了添加值,我执行以下操作:

让o2={…o1,年龄:31}

这非常简短,易于记忆,并且不需要实用函数

是否有类似的方法用于删除值?ES6非常受欢迎

多谢各位

更新:

您可以使用复杂的分解指定从对象中删除属性:

常量doSomething=(对象、道具)=>{
设{[prop]:省略,…res}=obj
返回res
}

但是,如果要删除的属性名称是静态的,则可以使用简单的一行代码删除它:

让{lastname,…o2}=o

最简单的方法是简单地,或者在变异对象之前克隆对象:

常量doSomething=(对象、道具)=>{
设res=Object.assign({},obj)
删除res[prop]
返回res
}

或者,您可以使用lodash实用程序库中的omit函数:

让o2=u2;省略(o,'lastname')

它可以作为lodash包的一部分提供,也可以作为独立的lodash.omit包提供

发表评论