如何剔除对象属性?

文章介绍了JavaScript库omit.js,它提供了一个API`omit(obj,fields)`,用于创建剔除了指定属性的深拷贝对象。文章展示了如何安装和使用omit.js,以及源码实现,主要通过`Object.assign`进行深拷贝并使用`delete`删除属性。此外,提到了测试用例和使用father作为NPM包研发工具的情况。
摘要由CSDN通过智能技术生成

API:

omit(obj: Object, fields: string[]): Object

返回一个被剔除属性的深拷贝对象。

它的API就是很简单,只有一个omit方法,参数是目标对象和剔除属性的集合。

用法

  • 首先安装一下依赖
npm i --save omit.js
npm i -S omit.js 
  • 使用
var omit = require('omit.js');
omit({ name: 'Benjy', age: 18 }, [ 'name' ]); // => { age: 18 } 

源码

function omit(obj, fields) {// eslint-disable-next-line prefer-object-spreadconst shallowCopy = Object.assign({}, obj);for (let i = 0; i < fields.length; i += 1) {const key = fields[i];delete shallowCopy[key];}return shallowCopy;
}

export default omit; 

一共11行代码。 首先使用了Object.assign做了一次深拷贝,然后遍历对象要剔除的fields数组,在循环中获取fields的元素,通过delete将深拷贝的对象属性依次删除,最后返回该对象。

这里深拷贝为了在将来使用该对象时不会影响原来的对象。

测试用例

我们有看到测试用例在这个路径/tests/index.test.js

import assert from 'assert';
import omit from '../src';

describe('omit', () => {it('should create a shallow copy', () => {const benjy = { name: 'Benjy' };const copy = omit(benjy, []);assert.deepEqual(copy, benjy);assert.notEqual(copy, benjy);});it('should drop fields which are passed in', () => {const benjy = { name: 'Benjy', age: 18 };assert.deepEqual(omit(benjy, ['age']), { name: 'Benjy' });assert.deepEqual(omit(benjy, ['name', 'age']), {});});
}); 

第一个测试:深拷贝的对象和原始对象对比 第二个测试:深拷贝的对象剔除属性后的结果是否正确

我们发现一般测试都用的是jest,而它用的是father。从npmjs官网了解到, father 是一款 NPM 包研发工具,能够帮助开发者更高效、高质量地研发 NPM 包、生成构建产物、再完成发布。

然后我们将目光移动到package.json文件上,发现其中的依赖还不少,father,np,还有其他一些eslint依赖。其中father,np在我们发布npm包提供了特别优秀的功能。

结束语:

剔除对象属性omit.js就到这里了~

最后

最近还整理一份JavaScript与ES的笔记,一共25个重要的知识点,对每个知识点都进行了讲解和分析。能帮你快速掌握JavaScript与ES的相关知识,提升工作效率。



有需要的小伙伴,可以点击下方卡片领取,无偿分享

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值