说明

前端常用的一些处理数据的工具类函数,次方法是vue文件,如果是js文件,请自行删除export

JS代码

  1. /*
  2. * 验证手机号是否合格
  3. * true--说明合格
  4. */
  5. export function isPhone(phoneStr) {
  6. let myreg = /^[1][3,4,5,7,8,9][0-9]{9}$/;
  7. if (!myreg.test(phoneStr)) {
  8. return false;
  9. } else {
  10. return true;
  11. }
  12. }
  13. /*
  14. * 验证身份证号是否合格
  15. * true--说明合格
  16. */
  17. export function isIdCard(idCardStr) {
  18. let idcardReg = /^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$|^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}([0-9]|X)$/;
  19. if (idcardReg.test(idCardStr)) {
  20. return true;
  21. } else {
  22. return false;
  23. }
  24. }
  25. /**
  26. * 验证车牌号是否合格
  27. * true--说明合格
  28. */
  29. export function isVehicleNumber(vehicleNumber) {
  30. let xreg = /^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z]{1}[A-Z]{1}(([0-9]{5}[DF]$)|([DF][A-HJ-NP-Z0-9][0-9]{4}$))/;
  31. let creg = /^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z]{1}[A-Z]{1}[A-HJ-NP-Z0-9]{4}[A-HJ-NP-Z0-9挂学警港澳]{1}$/;
  32. if (vehicleNumber.length == 7) {
  33. return creg.test(vehicleNumber);
  34. } else if (vehicleNumber.length == 8) {
  35. return xreg.test(vehicleNumber);
  36. } else {
  37. return false;
  38. }
  39. }
  40. /*
  41. * 验证字符串是否为空(也不能为纯空格)
  42. * true--说明为空, false--说明不为空
  43. */
  44. export function isEmptyString(string) {
  45. if (
  46. string == undefined ||
  47. typeof string == 'undefined' ||
  48. !string ||
  49. string == null ||
  50. string == '' ||
  51. /^\s+$/gi.test(string)
  52. ) {
  53. return true;
  54. } else {
  55. return false;
  56. }
  57. }
  58. /*
  59. * 生日转为年龄(精确到月份)
  60. */
  61. export function birsdayToAge(birsday) {
  62. let aDate = new Date();
  63. let thisYear = aDate.getFullYear();
  64. let bDate = new Date(birsday);
  65. let brith = bDate.getFullYear();
  66. let age = thisYear - brith;
  67. if (aDate.getMonth() == bDate.getMonth()) {
  68. if (aDate.getDate() < bDate.getDate()) {
  69. age = age - 1;
  70. }
  71. } else {
  72. if (aDate.getMonth() < bDate.getMonth()) {
  73. age = age - 1;
  74. }
  75. }
  76. return age;
  77. }
  78. /**
  79. * 判断数据类型
  80. * @param {any} val - 基本类型数据或者引用类型数据
  81. * @return {string} - 可能返回的结果有,均为小写字符串
  82. * number、boolean、string、null、undefined、array、object、function等
  83. */
  84. export function getType(val){
  85. //判断数据是 null 和 undefined 的情况
  86. if (val == null) {
  87. return val + "";
  88. }
  89. return typeof(val) === "object" ?
  90. Object.prototype.toString.call(val).slice(8, -1).toLowerCase() :
  91. typeof(val);
  92. }
  93. /*
  94. * 验证是否为数字
  95. */
  96. export function isNumber(n) {
  97. return !isNaN(parseFloat(n)) && isFinite(n);
  98. }
  99. /*
  100. * 是否为数组
  101. */
  102. export function isArray(obj) {
  103. return Object.prototype.toString.call(obj) === '[object Array]';
  104. }
  105. /*
  106. * 是否空数组
  107. */
  108. export function isArrayEmpty(val) {
  109. if (val && val instanceof Array && val.length > 0) {
  110. return false;
  111. } else {
  112. return true;
  113. }
  114. }
  115. /*
  116. * 获取url参数字符串
  117. * 没有返回null
  118. */
  119. export function getQueryString(name) {
  120. let reg = new RegExp('(^|&)' + name + '=([^&]*)(&|$)', 'i');
  121. let r = window.location.search.substr(1).match(reg);
  122. if (r != null) {
  123. return unescape(r[2]);
  124. }
  125. return null;
  126. }
  127. /*
  128. * 递归深拷贝
  129. */
  130. export function deepCopy(obj) {
  131. let result = Array.isArray(obj) ? [] : {};
  132. for (let key in obj) {
  133. if (obj.hasOwnProperty(key)) {
  134. if (typeof obj[key] === 'object' && obj[key] !== null) {
  135. result[key] = deepCopy(obj[key]);
  136. } else {
  137. result[key] = obj[key];
  138. }
  139. }
  140. }
  141. return result;
  142. }
  143. /**
  144. * 去除参数空数据(用于向后台传递参数的时候)
  145. * @param {Object} obj [参数对象]
  146. */
  147. export function filterEmptyData(obj) {
  148. for (let prop in obj) {
  149. obj[prop] === '' ? delete obj[prop] : obj[prop];
  150. }
  151. return obj;
  152. }
  153. /**
  154. * @desc 函数防抖,用于将多次执行变为最后一次执行
  155. * @param {function} func - 需要使用函数防抖的被执行的函数。必传
  156. * @param {Number} wait - 多少毫秒之内触发,只执行第一次,默认1000ms。可以不传
  157. */
  158. export function debounce(fn, delay) {
  159. delay = delay || 1000; //默认1s后执行
  160. let timer = null;
  161. return function () {
  162. let context = this;
  163. let arg = arguments;
  164. if (timer) {
  165. clearTimeout(timer);
  166. }
  167. timer = setTimeout(() => {
  168. fn.apply(context, arg);
  169. }, delay);
  170. };
  171. }
  172. /**
  173. * 节流函数, 用于将多次执行变为每隔一段时间执行
  174. * @param fn 事件触发的操作
  175. * @param delay 间隔多少毫秒需要触发一次事件
  176. */
  177. export function throttle2(fn, delay) {
  178. let timer = null;
  179. return function () {
  180. let context = this;
  181. let args = arguments;
  182. if (!timer) {
  183. timer = setTimeout(function () {
  184. fn.apply(context, args);
  185. clearTimeout(timer);
  186. }, delay);
  187. }
  188. };
  189. }
  190. /**
  191. * 时间戳转换,用户转换后端返回的json中时间格式问题
  192. * @param timestamp 时间戳参数
  193. */
  194. export function timestampToTime(timestamp) {
  195. var date = new Date(timestamp) //时间戳为10位需*1000,时间戳为13位的话不需乘1000
  196. var Y = date.getFullYear() + '-'
  197. var M_t = date.getMonth() + 1;
  198. var M = (M_t < 10? ('0' + M_t): M_t) + '-'
  199. var D = (date.getDate() < 10? ('0' + date.getDate()):date.getDate()) + ' '
  200. var h = (date.getHours() < 10? ('0' + date.getHours()):date.getHours()) + ':'
  201. var m = (date.getMinutes() < 10? ('0' + date.getMinutes()):date.getMinutes()) + ':'
  202. var s = (date.getSeconds() < 10? ('0' + date.getSeconds()):date.getSeconds())
  203. return Y + M + D + h + m + s
  204. }
  205. /**
  206. * 格式化文件大小 字节转换单位
  207. * @param value
  208. * @returns {string|*}
  209. */
  210. export function renderSize(value){
  211. if(null==value||value==''){
  212. return "0 Bytes";
  213. }
  214. var unitArr = new Array("Bytes","KB","MB","GB","TB","PB","EB","ZB","YB");
  215. var index=0,srcsize = parseFloat(value);
  216. index=Math.floor(Math.log(srcsize)/Math.log(1024));
  217. var size =srcsize/Math.pow(1024,index);
  218. // 保留的小数位数
  219. size=size.toFixed(2);
  220. return size+unitArr[index];
  221. }
  222. /**
  223. * 文件大小 字节转换单位
  224. * @param size
  225. * @returns {string|*}
  226. */
  227. export function filterSize(size){
  228. if (!size) return '';
  229. if (size < pow1024(1)) return size + ' B';
  230. if (size < pow1024(2)) return (size / pow1024(1)).toFixed(2) + ' KB';
  231. if (size < pow1024(3)) return (size / pow1024(2)).toFixed(2) + ' MB';
  232. if (size < pow1024(4)) return (size / pow1024(3)).toFixed(2) + ' GB';
  233. return (size / pow1024(4)).toFixed(2) + ' TB'
  234. }
  235. // 求次幂
  236. function pow1024(num) {
  237. return Math.pow(1024, num)
  238. }
  239. /**
  240. * 获取当前时间
  241. * @param
  242. * @returns {string|*}
  243. */
  244. export function getTime() {
  245. var myDate = new Date();
  246. var myYear = myDate.getFullYear(); //获取完整的年份(4位,1970-????)
  247. var myMonth = myDate.getMonth() + 1; //获取当前月份(0-11,0代表1月)
  248. var myToday = myDate.getDate(); //获取当前日(1-31)
  249. var myDay = myDate.getDay(); //获取当前星期X(0-6,0代表星期天)
  250. var myHour = myDate.getHours(); //获取当前小时数(0-23)
  251. var myMinute = myDate.getMinutes(); //获取当前分钟数(0-59)
  252. var mySecond = myDate.getSeconds(); //获取当前秒数(0-59)
  253. var week = ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六'];
  254. var nowTime;
  255. nowTime =
  256. myYear +
  257. '年' +
  258. fillZero(myMonth) +
  259. '月' +
  260. fillZero(myToday) +
  261. '日' +
  262. ' ' +
  263. fillZero(myHour) +
  264. ':' +
  265. fillZero(myMinute) +
  266. ':' +
  267. fillZero(mySecond) +
  268. ' ' +
  269. week[myDay] +
  270. ' ' +
  271. fillGreet(myHour);
  272. return nowTime;
  273. }
  274. // 问候语
  275. function fillGreet(hour) {
  276. let str = '';
  277. if (hour < 6) {
  278. str = '凌晨好!';
  279. } else if (hour < 9) {
  280. str = '早上好!';
  281. } else if (hour < 12) {
  282. str = '上午好!';
  283. } else if (hour < 14) {
  284. str = '中午好!';
  285. } else if (hour < 17) {
  286. str = '下午好!';
  287. } else if (hour < 19) {
  288. str = '傍晚好!';
  289. } else if (hour < 22) {
  290. str = '晚上好!';
  291. } else {
  292. str = '夜里好!';
  293. }
  294. return str;
  295. }
  296. // 补0
  297. function fillZero(str) {
  298. var realNum;
  299. if (str < 10) {
  300. realNum = '0' + str;
  301. } else {
  302. realNum = str;
  303. }
  304. return realNum;
  305. }
  306. // 生成指定长度的随机字符串
  307. export function randomString(len) {
  308. len = len || 32;
  309. var $chars = 'ABCDEFGHJKMNPQRSTWXYZabcdefhijkmnprstwxyz2345678'; /****默认去掉了容易混淆的字符oOLl,9gq,Vv,Uu,I1****/
  310. var maxPos = $chars.length;
  311. var pwd = '';
  312. for (let i = 0; i < len; i++) {
  313. pwd += $chars.charAt(Math.floor(Math.random() * maxPos));
  314. }
  315. return pwd;
  316. }