Utils.ts 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161
  1. /**
  2. * 工具
  3. */
  4. export default class Utils {
  5. /**
  6. * 获取不重复的随机数
  7. * @param minValue 最小值
  8. * @param maxValue 最大值
  9. * @param valueNum 随机个数
  10. */
  11. static getRandomValueDif(minValue: number, maxValue: number, valueNum: number) {
  12. // 全部随机数值
  13. let allNums = new Array;
  14. // 判断获取随机数个数
  15. let size = valueNum ? (valueNum > maxValue - minValue + 1 ? maxValue - minValue + 1 : valueNum) : 1;
  16. // 生成随机数值区间数组
  17. for (let i = minValue, k = 0; i <= maxValue; i++ , k++) {
  18. allNums[k] = i;
  19. }
  20. let arr = []
  21. // 随机从数组里面取值
  22. allNums.sort(function () { return 0.5 - Math.random(); });
  23. for (let j = 0; j < size; j++) {
  24. let index = Math.floor(Math.random() * allNums.length);
  25. arr.push(allNums[index]);
  26. let tmp = allNums[index];
  27. allNums[index] = allNums[allNums.length - 1];
  28. allNums[allNums.length - 1] = tmp;
  29. allNums.pop();
  30. }
  31. return arr;
  32. }
  33. /**
  34. * 获取范围内的随机数
  35. * @param minValue 最小值
  36. * @param maxValue 最大值
  37. */
  38. static getRangeRandom(minValue: number, maxValue: number) {
  39. // 获取数组从第一个开始到指定个数的下标区间
  40. return Utils.getRandomValueDif(minValue, maxValue, 1)[0];
  41. }
  42. /**
  43. * 数字转时间格式
  44. * @param sec
  45. * @returns
  46. */
  47. static secondsFormat(sec, havehour:boolean){
  48. let hour = Math.floor(sec / 3600);
  49. let minute = Math.floor((sec - hour * 3600) / 60);
  50. let second = sec - hour * 3600 - minute * 60;
  51. let hour1 = ''
  52. let minute1 = ''
  53. let second1 = ''
  54. if (hour < 10) {
  55. hour1 = "0" + hour;
  56. }else{
  57. hour1 = "" + hour;
  58. }
  59. if (minute < 10) {
  60. minute1 = "0" + minute;
  61. }else{
  62. minute1 = "" + minute;
  63. }
  64. if (second < 10) {
  65. second1 = "0" + second;
  66. }else{
  67. second1 = "" + second;
  68. }
  69. if(havehour){
  70. return hour1 + ":" + minute1 + ":" + second1;
  71. }else{
  72. return minute1 + ":" + second1;
  73. }
  74. }
  75. /**
  76. * 版本号比较
  77. * @param v1
  78. * @param v2
  79. * @returns
  80. */
  81. static compareVersion(v1, v2) {
  82. v1 = v1.split('.')
  83. v2 = v2.split('.')
  84. const len = Math.max(v1.length, v2.length)
  85. while (v1.length < len) {
  86. v1.push('0')
  87. }
  88. while (v2.length < len) {
  89. v2.push('0')
  90. }
  91. for (let i = 0; i < len; i++) {
  92. const num1 = parseInt(v1[i])
  93. const num2 = parseInt(v2[i])
  94. if (num1 > num2) {
  95. return 1
  96. } else if (num1 < num2) {
  97. return -1
  98. }
  99. }
  100. return 0
  101. }
  102. /**
  103. * 混淆答案在字库的位置
  104. */
  105. public static initHunXiaoZiKu(data){
  106. let TiData_ChengYu = data
  107. //随机下混淆字库 成语
  108. for (let index = 0; index < TiData_ChengYu.length; index++) {
  109. const element = TiData_ChengYu[index];
  110. let hunxiao = String(element[0]).split(',')
  111. let answer = String(element[1]).split(',')
  112. //console.log('混淆', hunxiao, answer)
  113. let shurr = Utils.getRandomValueDif(0,20,4) //gameShareAdsVideo.getRandomValueDif(0,23,4)
  114. //console.log('随机数', shurr)
  115. let no = 0
  116. let zikustr = ''
  117. let shuzu = []
  118. for (let index = 0; index < shurr.length; index++) {
  119. const element = shurr[index];
  120. shuzu[element] = answer[no]
  121. no++
  122. }
  123. for (let index = 0; index < 21; index++) {
  124. const element = shuzu[index];
  125. let xin = ''
  126. if(index != 0){
  127. xin = ','
  128. }
  129. if(element == null || element == undefined){
  130. xin += hunxiao.shift()
  131. }else{
  132. xin += element
  133. }
  134. zikustr += xin
  135. }
  136. TiData_ChengYu[index][0] = zikustr
  137. //console.log('混淆后的数据', TiData_ChengYu[index][0])
  138. }
  139. }
  140. }