Skip to content

Commit e81c68c

Browse files
authored
delete fields from obj (#20)
* feat: checkPhoneNumber文档 * feat: deleteFieldsFromObj * feat: deleteInvalidValue * fix: tslint * fix: package-lock.json
1 parent 4457de0 commit e81c68c

File tree

10 files changed

+151
-124
lines changed

10 files changed

+151
-124
lines changed

docs/functions/checkPhoneNumber.md

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
---
2+
title: checkPhoneNumber
3+
toc: menu
4+
---
5+
6+
# checkPhoneNumber
7+
检查手机号是否合法。
8+
```typescript
9+
import { checkPhoneNumber } from '@mlz/doraemon';
10+
11+
checkPhoneNumber('13222222222'); // true
12+
checkPhoneNumber(13222222222); // true
13+
checkPhoneNumber('12222222222'); // false
14+
checkPhoneNumber('23222222222'); // false
15+
checkPhoneNumber('1322222222'); // false
16+
checkPhoneNumber(null); // false
17+
checkPhoneNumber(undefined); // true
18+
```
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
---
2+
title: deleteFieldsFromObj
3+
toc: menu
4+
---
5+
6+
# deleteFieldsFromObj
7+
删除目标对象的目标字段。
8+
```typescript
9+
import { deleteFieldsFromObj } from '@mlz/doraemon';
10+
11+
deleteFieldsFromObj([1], [0]); // {}
12+
deleteFieldsFromObj({}, ['a']); // {}
13+
deleteFieldsFromObj({
14+
a: 1,
15+
b: '2',
16+
c: null,
17+
d: undefined,
18+
}, ['a', 'c']); // { b: '2', d: undefined }
19+
```
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
---
2+
title: deleteInvalidValue
3+
toc: menu
4+
---
5+
6+
# deleteInvalidValue
7+
删除目标对象的无效值如`null`|`undefined`
8+
```typescript
9+
import { deleteInvalidValue } from '@mlz/doraemon';
10+
11+
deleteFieldsFromObj({}); // {}
12+
deleteFieldsFromObj([]); // []
13+
deleteFieldsFromObj(['a']); // ['a']
14+
deleteFieldsFromObj({ a: NaN, b: 2, c: null, d: undefined }); // { b: 2 }
15+
```

package-lock.json

Lines changed: 1 addition & 121 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@mlz/doraemon",
3-
"version": "0.6.0",
3+
"version": "0.7.0",
44
"description": "常用工具函数集合,释放你的Ctrl C、Ctrl V",
55
"main": "lib/index.js",
66
"module": "es/index.js",
@@ -67,8 +67,6 @@
6767
"@mlz/lint": "^1.1.10",
6868
"@types/jest": "^26.0.0",
6969
"@types/lodash": "^4.14.157",
70-
"copyfiles": "^2.3.0",
71-
"cross-env": "^7.0.2",
7270
"dumi": "^1.0.8",
7371
"eslint": "^7.2.0",
7472
"father-build": "^1.17.2",

src/checkPhoneNumber.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import * as _ from 'lodash';
22

3+
/** 检查手机号是否合法 */
34
export const checkPhoneNumber = (phoneNumber:string|number) => {
45
if (_.isNull(phoneNumber) || _.isUndefined(phoneNumber)) {
56
return false;

src/deleteFieldsFromObj.ts

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
import { IObject } from './global';
2+
import * as _ from 'lodash';
3+
4+
/**
5+
* @description 从目标对象删除传入的字段并返回删除后的object
6+
* @param target 目标对象
7+
* @param keys 要删除的字段的key的数组
8+
*/
9+
export const deleteFieldsFromObj = <T = IObject>(target:T, keys:(keyof T)[]):T|{} => {
10+
if (!_.isPlainObject(target)) {
11+
return {};
12+
}
13+
if (!_.isArray(keys)) {
14+
return {};
15+
}
16+
keys.forEach((key) => {
17+
delete target[key];
18+
});
19+
return target;
20+
};
21+
22+
export default deleteFieldsFromObj;

src/deleteInvalidValue.ts

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
import { IObject } from "./global";
2+
import { isPlainObject, isNull, isUndefined } from "lodash";
3+
4+
/**
5+
* @description 删除对象里无效值如`null`|`undefined`
6+
*/
7+
export const deleteInvalidValue = <T = IObject>(target:T) => {
8+
if (isPlainObject(target)) {
9+
for (const [key, value] of Object.entries(target)) {
10+
if (isNull(value) || isUndefined(value) || isNaN(value)) {
11+
delete target[key];
12+
}
13+
}
14+
}
15+
return target;
16+
};
17+
18+
export default deleteInvalidValue;

test/deleteFieldsFromObj.test.ts

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
import { deleteFieldsFromObj } from '../src/deleteFieldsFromObj';
2+
3+
describe('deleteFieldsFromObj', () => {
4+
const ex = {
5+
a: 1,
6+
b: '2',
7+
c: null,
8+
d: undefined,
9+
};
10+
it('targe=[1, 2], key=[0]', () => {
11+
expect(deleteFieldsFromObj([1, 2], [0])).toEqual({});
12+
});
13+
it('null', () => {
14+
expect(deleteFieldsFromObj(null, [0])).toEqual({});
15+
});
16+
it('undefined', () => {
17+
expect(deleteFieldsFromObj(undefined, [0])).toEqual({});
18+
});
19+
it('Empty object', () => {
20+
expect(deleteFieldsFromObj({}, ['a'] as any)).toEqual({});
21+
});
22+
it('Keys are not an array', () => {
23+
expect(deleteFieldsFromObj(ex, { a: 1 } as any)).toEqual({});
24+
});
25+
it('An object', () => {
26+
expect(deleteFieldsFromObj(ex, ['a', 'c'])).toEqual({
27+
b: '2',
28+
d: undefined,
29+
});
30+
});
31+
});

test/deleteInvalidValue.test.ts

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
import { deleteInvalidValue } from '../src/deleteInvalidValue';
2+
3+
describe('deleteInvalidValue', () => {
4+
it('null', () => {
5+
expect(deleteInvalidValue(null)).toBeNull();
6+
});
7+
it('undefined', () => {
8+
expect(deleteInvalidValue(undefined)).toBeUndefined();
9+
});
10+
it('Empty object', () => {
11+
expect(deleteInvalidValue({})).toEqual({});
12+
});
13+
it('has NaN', () => {
14+
expect(deleteInvalidValue({ a: NaN, b: 2 })).toEqual({ b: 2 });
15+
});
16+
it('has null', () => {
17+
expect(deleteInvalidValue({ a: null, b: 2 })).toEqual({ b: 2 });
18+
});
19+
it('has undefined', () => {
20+
expect(deleteInvalidValue({ a: undefined, b: 2 })).toEqual({ b: 2 });
21+
});
22+
it('normal', () => {
23+
expect(deleteInvalidValue({ a: 1, b: 2 })).toEqual({ a: 1, b: 2 });
24+
});
25+
});

0 commit comments

Comments
 (0)