/** * 工具 */ export default class Utils { /** * 获取不重复的随机数 * @param minValue 最小值 * @param maxValue 最大值 * @param valueNum 随机个数 */ static getRandomValueDif(minValue: number, maxValue: number, valueNum: number) { // 全部随机数值 let allNums = new Array; // 判断获取随机数个数 let size = valueNum ? (valueNum > maxValue - minValue + 1 ? maxValue - minValue + 1 : valueNum) : 1; // 生成随机数值区间数组 for (let i = minValue, k = 0; i <= maxValue; i++ , k++) { allNums[k] = i; } let arr = [] // 随机从数组里面取值 allNums.sort(function () { return 0.5 - Math.random(); }); for (let j = 0; j < size; j++) { let index = Math.floor(Math.random() * allNums.length); arr.push(allNums[index]); let tmp = allNums[index]; allNums[index] = allNums[allNums.length - 1]; allNums[allNums.length - 1] = tmp; allNums.pop(); } return arr; } /** * 获取范围内的随机数 * @param minValue 最小值 * @param maxValue 最大值 */ static getRangeRandom(minValue: number, maxValue: number) { // 获取数组从第一个开始到指定个数的下标区间 return Utils.getRandomValueDif(minValue, maxValue, 1)[0]; } /** * 数字转时间格式 * @param sec * @returns */ static secondsFormat(sec, havehour:boolean){ let hour = Math.floor(sec / 3600); let minute = Math.floor((sec - hour * 3600) / 60); let second = sec - hour * 3600 - minute * 60; let hour1 = '' let minute1 = '' let second1 = '' if (hour < 10) { hour1 = "0" + hour; }else{ hour1 = "" + hour; } if (minute < 10) { minute1 = "0" + minute; }else{ minute1 = "" + minute; } if (second < 10) { second1 = "0" + second; }else{ second1 = "" + second; } if(havehour){ return hour1 + ":" + minute1 + ":" + second1; }else{ return minute1 + ":" + second1; } } /** * 版本号比较 * @param v1 * @param v2 * @returns */ static compareVersion(v1, v2) { v1 = v1.split('.') v2 = v2.split('.') const len = Math.max(v1.length, v2.length) while (v1.length < len) { v1.push('0') } while (v2.length < len) { v2.push('0') } for (let i = 0; i < len; i++) { const num1 = parseInt(v1[i]) const num2 = parseInt(v2[i]) if (num1 > num2) { return 1 } else if (num1 < num2) { return -1 } } return 0 } /** * 混淆答案在字库的位置 */ public static initHunXiaoZiKu(data){ let TiData_ChengYu = data //随机下混淆字库 成语 for (let index = 0; index < TiData_ChengYu.length; index++) { const element = TiData_ChengYu[index]; let hunxiao = String(element[0]).split(',') let answer = String(element[1]).split(',') //console.log('混淆', hunxiao, answer) let shurr = Utils.getRandomValueDif(0,20,4) //gameShareAdsVideo.getRandomValueDif(0,23,4) //console.log('随机数', shurr) let no = 0 let zikustr = '' let shuzu = [] for (let index = 0; index < shurr.length; index++) { const element = shurr[index]; shuzu[element] = answer[no] no++ } for (let index = 0; index < 21; index++) { const element = shuzu[index]; let xin = '' if(index != 0){ xin = ',' } if(element == null || element == undefined){ xin += hunxiao.shift() }else{ xin += element } zikustr += xin } TiData_ChengYu[index][0] = zikustr //console.log('混淆后的数据', TiData_ChengYu[index][0]) } } }