util.js 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146
  1. const formatTime = date => {
  2. const year = date.getFullYear()
  3. const month = date.getMonth() + 1
  4. const day = date.getDate()
  5. const hour = date.getHours()
  6. const minute = date.getMinutes()
  7. const second = date.getSeconds()
  8. return [year, month, day].map(formatNumber).join('/') + ' ' + [hour, minute, second].map(formatNumber).join(':')
  9. }
  10. const formatNumber = n => {
  11. n = n.toString()
  12. return n[1] ? n : '0' + n
  13. }
  14. //自动判断类型并判断类型是否为空
  15. function isNull(value) {
  16. if (value == null || value == undefined) return true
  17. if (this.isString(value)) {
  18. if (value.trim().length == 0) return true
  19. } else if (this.isArray(value)) {
  20. if (value.length == 0) return true
  21. } else if (this.isObject(value)) {
  22. for (let name in value) return false
  23. return true
  24. }
  25. return false;
  26. }
  27. //判断字符串是否空
  28. function isString(value) {
  29. return value != null && value != undefined && value.constructor == String
  30. }
  31. //判断数组是否空
  32. function isArray(value) {
  33. return value != null && value != undefined && value.constructor == Array
  34. }
  35. //判断对象是否空
  36. function isObject(value) {
  37. return value != null && value != undefined && value.constructor == Object
  38. }
  39. //精确的乘法结果
  40. function accMul(arg1, arg2) {
  41. var m = 0, s1 = arg1.toString(), s2 = arg2.toString();
  42. try { m += s1.split(".")[1].length } catch (e) { }
  43. try { m += s2.split(".")[1].length } catch (e) { }
  44. return Number(s1.replace(".", "")) * Number(s2.replace(".", "")) / Math.pow(10, m)
  45. }
  46. //统计长度和数量
  47. function count(obj) {
  48. var objType = typeof obj;
  49. if (objType == "string") {
  50. return obj.length;
  51. } else if (objType == "object") {
  52. var objLen = 0;
  53. for (var i in obj) {
  54. objLen++;
  55. }
  56. return objLen;
  57. }
  58. return false;
  59. }
  60. //删除空数组
  61. function clearArray(array) {
  62. for (var i = 0; i < array.length; i++) {
  63. if (array[i] == "" || typeof (array[i]) == "undefined") {
  64. array.splice(i, 1);
  65. i = i - 1;
  66. }
  67. }
  68. return array;
  69. }
  70. //Canvas文字换行
  71. function breakTextCanvas(context, text, width, font) {
  72. var result = [];
  73. var textArray = text.split('\r\n');
  74. for (let i = 0; i < textArray.length; i++) {
  75. let item = textArray[i];
  76. var breakPoint = 0;
  77. while ((breakPoint = findBreakPoint(item, width, context)) !== -1) {
  78. result.push(item.substr(0, breakPoint));
  79. item = item.substr(breakPoint);
  80. }
  81. if (item) {
  82. result.push(item);
  83. }
  84. }
  85. return result;
  86. }
  87. function findBreakPoint(text, width, context) {
  88. var min = 0;
  89. var max = text.length - 1;
  90. while (min <= max) {
  91. var middle = Math.floor((min + max) / 2);
  92. var middleWidth = context.measureText(text.substr(0, middle)).width;
  93. var oneCharWiderThanMiddleWidth = context.measureText(text.substr(0, middle + 1)).width;
  94. if (middleWidth <= width && oneCharWiderThanMiddleWidth > width) {
  95. return middle;
  96. }
  97. if (middleWidth < width) {
  98. min = middle + 1;
  99. } else {
  100. max = middle - 1;
  101. }
  102. }
  103. return -1;
  104. }
  105. //get参数转换数组
  106. function strToArray(str) {
  107. var arr = str.split('&');
  108. var newArray = new Object();
  109. for (let i in arr) {
  110. var kye = arr[i].split("=")[0]
  111. var value = arr[i].split("=")[1]
  112. newArray[kye] = value
  113. }
  114. return newArray;
  115. }
  116. /**
  117. * 判断是否有某个值
  118. */
  119. function inArray(arr, value) {
  120. if (arr.indexOf && typeof (arr.indexOf) == 'function') {
  121. var index = arr.indexOf(value);
  122. if (index >= 0) {
  123. return true;
  124. }
  125. }
  126. return false;
  127. }
  128. //去除字符串左右两端的空格
  129. function trim(str) {
  130. var str = str.toString();
  131. return str.replace(/(^\s*)|(\s*$)/g, "");
  132. }
  133. module.exports = {
  134. formatTime: formatTime,
  135. isNull: isNull,
  136. isString: isString,
  137. isArray: isArray,
  138. isObject: isObject,
  139. count: count,
  140. accMul: accMul,
  141. clearArray: clearArray,
  142. breakTextCanvas: breakTextCanvas,
  143. strToArray: strToArray,
  144. inArray: inArray,
  145. trim: trim,
  146. }