util.js 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. //获取年月日
  2. const formatTime = (date) => {
  3. const year = date.getFullYear()
  4. const month = date.getMonth() + 1
  5. const day = date.getDate()
  6. const hour = date.getHours()
  7. const minute = date.getMinutes()
  8. const second = date.getSeconds()
  9. return {
  10. year: year,
  11. month: [year, month].map(formatNumber).join('-'),
  12. day: [year, month, day].map(formatNumber).join('-'),
  13. month_tow: month,
  14. allDate: [year, month, day].map(formatNumber).join('-') + " " + hour + ":" + minute
  15. }
  16. }
  17. const formatNumber = n => {
  18. n = n.toString()
  19. return n[1] ? n : '0' + n
  20. }
  21. //删除数组的某一项
  22. const arrRemoveObj = (array, obj) => {
  23. let length = array.length;
  24. for (let i = 0; i < length; i++) {
  25. if (array[i] === obj) {
  26. if (i === 0) {
  27. array.shift();
  28. return array;
  29. } else if (i === length - 1) {
  30. array.pop();
  31. return array;
  32. } else {
  33. array.splice(i, 1);
  34. return array;
  35. }
  36. }
  37. }
  38. }
  39. //获取对应积分类型
  40. const getTypeItem = (arr, id) => {
  41. var item = arr.filter(element => {
  42. return typeof (id) == 'string' ? element.code == id : element.id == id
  43. });
  44. return item[0]
  45. }
  46. // 获取唯一标识(uid)
  47. const generateUUID = () => {
  48. var d = new Date().getTime();
  49. var uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
  50. var r = (d + Math.random() * 16) % 16 | 0;
  51. d = Math.floor(d / 16);
  52. return (c == 'x' ? r : (r & 0x3 | 0x8)).toString(16);
  53. });
  54. return uuid;
  55. };
  56. // 设置缓存
  57. const setCache = (key, val) => {
  58. dd.setStorageSync({
  59. key: key,
  60. data: val
  61. });
  62. }
  63. // 获取缓存
  64. const getCache = (key) => {
  65. return dd.getStorageSync({ key: key }).data;
  66. }
  67. // 防抖
  68. const _debounce = (fn, delay = 500) => {
  69. let timeout = null; // 创建一个标记用来存放定时器的返回值
  70. return function () {
  71. // 每当用户输入的时候把前一个setTimeout clear掉
  72. clearTimeout(timeout);
  73. // 然后又创建一个新的setTimeout,
  74. // 这样就能保证输入字符后的 interval 间隔内如果还有字符输入的话,就不会执行fn函数
  75. timeout = setTimeout(() => {
  76. // 关键在第一个参数,为了确保上下文环境为当前的this,所以不能直接用fn
  77. fn.apply(this, arguments);
  78. }, delay);
  79. }
  80. }
  81. // 节流
  82. const _throttle = (fn, interval = 500) => {
  83. var last;
  84. var timer;
  85. return function () {
  86. var th = this;
  87. var args = arguments;
  88. var now = +new Date();
  89. if (last && now - last < interval) {
  90. clearTimeout(timer);
  91. timer = setTimeout(function () { //用户最后一次点击时间间隔小于设置时间执行
  92. last = now;
  93. fn.apply(th, args);
  94. }, interval);
  95. } else {
  96. last = now;
  97. fn.apply(th, args);
  98. }
  99. }
  100. }
  101. module.exports = {
  102. formatTime,
  103. arrRemoveObj,
  104. getTypeItem,
  105. generateUUID,
  106. setCache,
  107. getCache,
  108. _debounce,
  109. _throttle,
  110. }