【类型判断 —— getArrayTypeDetail】
功能: 判断数组的细粒度的数据类型,返回结果有以下这几种类型组成的一个数组详细结果:string
、 bigint
、 boolean
、 symbol
、 undefined
、 object
、 function
、 array
、 object
、 date
、 null
、 int
、 float
、 infinite
、 NaN
。
返回数组: [{ index: number | string ; value: any; type: returnTypeStr; }...]
注意: 这里返回的类型并没有:number
| finite
,因为number
类型已经被细粒度的类型细化, 而finite
则被int
和float
类型代替
1-函数引入
js
import { getArrayTypeDetail } from 'tj-jstools'
1
2-函数声明
ts
declare type returnTypeStr = 'string' | 'bigint' | 'boolean' | 'symbol'
| 'undefined' | 'object' | 'function' | 'array' | 'object' | 'date'
| 'null' | 'int' | 'float' | 'infinite' | 'NaN';
declare type arrayTypeDetail = {
index: string | number;
value: any;
type: returnTypeStr;
};
declare function getArrayTypeDetail(params: any[], selectType?: returnTypeStr | 'number'): arrayTypeDetail[];
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
3-使用示例
ts
const testArr:any[] = [true,null,undefined,1/0,5,5.01,{},[],()=>{},NaN,'']
const res1:arrayTypeDetail[] = getArrayTypeDetail(testArr)
/*
[
{ index: 0, value: true, type: 'boolean' },
{ index: 1, value: null, type: 'null' },
{ index: 2, value: undefined, type: 'undefined' },
{ index: 3, value: Infinity, type: 'infinite' },
{ index: 4, value: 5, type: 'int' },
{ index: 5, value: 5.01, type: 'float' },
{ index: 6, value: {}, type: 'object' },
{ index: 7, value: [], type: 'array' },
{ index: 8, value: [Function (anonymous)], type: 'function' },
{ index: 9, value: NaN, type: 'NaN' },
{ index: 10, value: '', type: 'string' }
]
*/
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
TIP
特别注意该方法返回的类型里面没有:number
| finite
;
ERROR
该方法的第一个参数是一个数组类型的参数,且不能为空,否则将抛出错误
js
Uncaught Error: getXXXX方法的参数不能为空!
1
第二个参数可以筛选返回的类型
ts
const testArr:any[] = [true,null,undefined,1/0,5,5.01,{},[],()=>{},NaN,'']
const res1:arrayTypeDetail[] = getArrayTypeDetail(testArr,'infinite')
/*
[ { index: 3, value: Infinity, type: 'infinite' } ]
*/
1
2
3
4
5
2
3
4
5
第二个参数是number
时注意:
当二个参数是number
时,返回的数据类型只有:int
和 float
类型的数据
ts
const testArr:any[] = [true,null,undefined,1/0,5,5.01,{},[],()=>{},NaN,'']
const res1:arrayTypeDetail[] = getArrayTypeDetail(testArr,'number')
/*
[
{ index: 4, value: 5, type: 'int' },
{ index: 5, value: 5.01, type: 'float' }
]
*/
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8