js常用工具函数

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   }
原文地址:https://www.cnblogs.com/sinceForever/p/12667434.html