js常用工具函数
- (多为项目中需要,然后收集出来的,有一些根据自己项目需求做了修改,非全部原创,只为学习与记录)
1 // 数值千分化例如1000000转化为1,000,000,其中对小数做了处理,对含小数的多位数值友好。
2 function toThousands(num) {
3 var num = (num || 0).toString(), result = '';
4 let num1 = ""
5 let num2 = ""
6 if(num.indexOf(".") >= 0) {
7 num1 = num.split(".")[0]
8 num2 = num.split(".")[1]
9
10 } else {
11 num1 = num
12 num2 = ""
13 }
14 while (num1.length > 3) {
15 result = ',' + num1.slice(-3) + result;
16 num1 = num1.slice(0, num1.length - 3);
17 }
18 if (num1 && num2) { result = num1 + result + "." + num2; }
19 else {result = num1 + result}
20 return result;
21 }
22 // 复制新对象
23 function extendCopy(p) {
24 var c = {};
25 for (var i in p) {
26 c[i] = p[i];
27 }
28 return c;
29 }
30
31 const compare = property => {
32 return function (a, b) {
33 if(a[property] > 0){
34 return a[property]
35 }else {
36 return b[property]
37 }
38 }
39 }
40 // 处理域名
41 function geturl (){
42 var origin = location.origin;
43 var url = 'https://sit.tohours.com/businessplanner/';
44 if(origin.indexOf('p.tohours.com') >= 0 || origin.indexOf('svn.tohours.com') >= 0 || origin.indexOf('sit.tohours.com') >= 0 || origin.indexOf('127.0.0.1:8020') >= 0){
45 url = 'https://sit.tohours.com/businessplanner/';
46 }else {
47 url = origin + '/businessplanner/';
48 }
49 return url;
50 }
51 // 时间格式化函数2
52 function parseTime(time, cFormat) {
53 if (arguments.length === 0) {
54 return null
55 }
56 const format = cFormat || '{y}-{m}-{d} {h}:{i}:{s}'
57 let date
58 if (typeof time === 'object') {
59 date = time
60 } else {
61 if ((typeof time === 'string') && (/^[0-9]+$/.test(time))) {
62 time = parseInt(time)
63 }
64 if ((typeof time === 'number') && (time.toString().length === 10)) {
65 time = time * 1000
66 }
67 date = new Date(time)
68 }
69 const formatObj = {
70 y: date.getFullYear(),
71 m: date.getMonth() + 1,
72 d: date.getDate(),
73 h: date.getHours(),
74 i: date.getMinutes(),
75 s: date.getSeconds(),
76 a: date.getDay()
77 }
78 const time_str = format.replace(/{(y|m|d|h|i|s|a)+}/g, (result, key) => {
79 let value = formatObj[key]
80 // Note: getDay() returns 0 on Sunday
81 if (key === 'a') {
82 return ['日', '一', '二', '三', '四', '五', '六'][value ]
83 }
84 if (result.length > 0 && value < 10) {
85 value = '0' + value
86 }
87 return value || 0
88 })
89 return time_str
90 }
91 //时间格式化
92 const formatTime = date => {
93 const year = date.getFullYear()
94 const month = date.getMonth() + 1
95 const day = date.getDate()
96 const hour = date.getHours()
97 const minute = date.getMinutes()
98 const second = date.getSeconds()
99
100 return [year, month, day].map(formatNumber).join('-')
101 + ' ' + [hour, minute, second].map(formatNumber).join(':')
102 }
103
104 const formatNumber = n => {
105 n = n.toString()
106 return n[1] ? n : '0' + n
107 }
108 // 判断是否为number
109 const isNumber = obj => {
110 return !Number.isNaN(parseFloat(obj)) && Number.isFinite(Number(obj))
111 }
112 // 保留两位小数(只有一位小数时不补0)
113 const getTwoPlaceNum = a => {
114 return Math.round(a * 100) / 100
115 }
116 // 保留两位小数(只有一位小数时补0)
117 const getTwoPlaceNum2 = a => {
118 var aNew;
119 var re = /([0-9]+.[0-9]{2})[0-9]*/;
120 aNew = a.replace(re,"$1");
121 return aNew
122 }
123
124 export {
125 toThousands,
126 extendCopy,
127 compare,
128 formatTime,
129 parseTime,
130 isNumber,
131 geturl,
132 getTwoPlaceNum
133 }