index.ts
2.74 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
/**
* 补零
* @param number
* @param length
*/
export function fixO(number: string | number, length = 2): string {
let temp = number.toString();
while (temp.length < length) {
temp = `0${temp}`;
}
return temp;
}
/**
* 保留两位小数
*/
export function toDouble(source: any, length = 2): number {
if (!source) return 0;
let result = source;
if (typeof source !== 'number') {
result = Number(source);
}
try {
result = Number(result.toFixed(length));
} catch (e) {
result = 0;
}
return result;
}
/**
* getIdxById
* @param {Array} arr
* @param {Int} id
* @return {Int} index
*/
export const getIndexByValue = (arr: Array<any>, value: number, key = 'value') => {
if (!arr || !arr.length) return -1;
if (!value) return -1;
let isPrimitive = true;
for (let i = 0, l = arr.length; i < l; i++) {
const e = arr[i];
if (e !== null && typeof e === 'object') {
isPrimitive = false;
break;
}
}
for (let i = 0, l = arr.length; i < l; i++) {
const item = arr[i];
if (isPrimitive ? item === value : item[key] === value) {
return i;
}
}
return -1;
};
const defaultFieldName = 'label';
const defaultValueFieldName = 'value';
/**
* 根据给定数据值获取集合中项目的指定项
* @param value 数据值
* @param data 数据集合
* @param options 选项
*/
export const getItemInList = <T, R>(
value: T,
data: any[],
options: {
fieldName?: string;
valueFieldName?: string;
defaultValue?: R;
} = {},
): R => {
const opt = { fieldName: defaultFieldName, valueFieldName: defaultValueFieldName, ...options };
const item = data.find((item) => {
return item[opt.valueFieldName] === value;
});
return item || {};
};
/**
* 隐藏电话中间部分
* @param phone
* @param length
*/
export const hiddenPhone = (phone: string, length = 4): string => {
const start = 3;
let temp = phone;
if (temp && temp.length > start) {
temp = `${temp.substr(0, start)}${new Array(length + 1).join('*')}${temp.substr(
start + length,
temp.length - start - length,
)}`;
}
return temp;
};
/**
* 保留两位小数 四舍五入
* @param n
* @param digit 需要的小数位数
* @returns
*/
export const toFixed = (n: number, digit: number): string => {
if (typeof n !== 'number') {
throw new Error('n is not a number');
}
let result = String(Math.round(Math.pow(10, digit) * n) / Math.pow(10, digit));
if (result.indexOf('.') == -1) {
if (digit != 0) {
result += '.';
result += new Array(digit + 1).join('0');
}
} else {
let arr = result.split('.');
if (arr[1].length < digit) {
arr[1] += new Array(digit - arr[1].length + 1).join('0');
}
result = arr.join('.');
}
return result;
};