热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Lodash的'omit()'的纯JavaScript替代

我一直在寻找仅使用JavaScript的Lodashomit()的替代产品。这是我想要实现的:

我一直在寻找仅使用Javascript的Lodash omit()的替代产品。这是我想要实现的:

function omit(obj,attr) {
// @obj: original object
// @attr: string,attribute I want to omit
// return a new object,do not modify the original object
}

到目前为止,我已经找到了解决方案:

let { attr,...newObj } = obj;

但是它仅在已知attr的情况下有效。我希望attr是动态的,所以attr应该是字符串。我该怎么办?


使用计算出的属性名称来“提取”要在销毁时删除的属性:


function omit(obj,attr) {
const { [attr]: _,...newObj } = obj;
return newObj;
}
console.log(omit({ foo: 'foo',bar: 'bar',baz: 'baz' },'bar'));


,

_.omit()函数支持排除多个键。该函数接受参数列表,键数组或参数和数组的组合。要保留该功能,可以使用rest parameters,flatten将它们转换为Set,通过Object.entries()将对象转换为条目数组,对其进行过滤,然后再转换回使用Object.fromEntries()到对象。


function omit(obj,...keys) {
const keysToRemove = new Set(keys.flat()); // flatten the props,and convert to a Set
return Object.fromEntries( // convert the entries back to object
Object.entries(obj) // convert the object to entries
.filter(([k]) => !keysToRemove.has(k)) // remove entries with keys that exist in the Set
);
}
console.log(omit({ foo: 'foo','bar'));
console.log(omit({ foo: 'foo','bar','baz'));
console.log(omit({ foo: 'foo',['bar','baz']));
console.log(omit({ foo: 'foo',['baz']));



推荐阅读
author-avatar
建哥2502897913
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有