Javascript lodash替代品省略

Javascript lodash替代品省略,javascript,object,lodash,Javascript,Object,Lodash,我想删除一个属性并返回一个新对象,而不改变原始对象 我知道我们可以用Lodash轻松做到这一点: const profile={name:'Maria',年龄:30} _.omit(profile,name)//它返回一个没有属性名{age:30}的新对象 但是,我想知道是否可以使用vanilla JavaScript,而无需将该值指定给未定义的,或使用过滤器?来创建一个没有属性的对象: const omit single=(key,{[key]:,….obj})=>obj const pr

我想删除一个属性并返回一个新对象,而不改变原始对象

我知道我们可以用Lodash轻松做到这一点:

const profile={name:'Maria',年龄:30}
_.omit(profile,name)//它返回一个没有属性名{age:30}的新对象
但是,我想知道是否可以使用vanilla JavaScript,而无需将该值指定给
未定义的
,或使用
过滤器

来创建一个没有属性的对象:

const omit single=(key,{[key]:,….obj})=>obj
const profile={name:'Maria',年龄:30}
const result=ommitsingle('name',profile)

console.log(结果)
如果没有嵌套对象,请尝试按如下方式进行克隆:

const profile={name:'Maria',年龄:30}
函数deleteProperty(对象、属性){
var clonedObject=JSON.parse(JSON.stringify(object));
删除克隆对象[属性];
返回克隆对象;
}
var newProfile=deleteProperty(配置文件,“名称”);
控制台日志(概要文件);

console.log(newProfile)编写了一个包来解决这个问题

它不会变异,也不会在引擎盖下使用
delete
,但是纯粹的功能性功能

您可以尝试一下

export const flattkeys=(s)=>
s
.替换(/\[(\w+)\]/g',.$1')
.替换(/^\./,'')
.split('.');
导出常量忽略=(对象,路径)=>{
const obj=对象;
让键=路径;
如果(键的类型==='string'){
按键=按键(按键);
}
如果(keys.length==1){
删除obj[键];
返回未定义;
}
返回omit(obj[keys[0]],keys.slice(1).join('.');
};
例如:

const数据={
用户:{
姓名:“Khoa”,
年龄:24
},
公司:{
名称:'测试',
}
}
省略(数据“company.name”)
//输出:
//{用户:{姓名:'Khoa',年龄:24},公司:{}

仅使用rest参数的已接受答案的细微变化:

const-omit=(o,…路径)=>
Object.fromEntries(Object.entries(o).filter([k])=>!path.includes(k)))

这是否回答了您的问题?非常感谢您,但正如我所说,我不想更改当前对象,也不想使用
未定义的
非常感谢这是一个简单明了的解决方案,我非常喜欢它使用JSON.parse比像这样的扩展运算符有什么好处:const clonedObject={…object}?非常感谢您,您的第一个选项正是我想要的,是
的完美香草替代品。省略
,尽管这种语法对我来说是全新的。不客气。我添加了一些链接,可能会为您提供更多信息。
 const obj = { 
   prop0: 0, 
   prop1: 1, 
   prop2: 2, 
   prop3: 3, 
 };
   
 const prunedObj = (({ prop1, prop2, ...rest }) => rest)(obj);

 // prunedObj => { prop0: 0, prop3: 3}