/** * 工具 */ 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 } /** * 数组打乱顺序 * @param arr */ static shuffle(arr){ var length = arr.length,randomIndex,temp; while(length){ randomIndex = Math.floor(Math.random()*(length--)) temp = arr[randomIndex] arr[randomIndex] = arr[length] arr[length] = temp } return arr } static randChunkSplit(arr,min,max) { // uncomment this line if you don't want the original array to be affected var arr = arr.slice(); //保留原始数据 注释掉会更改原始数据 var arrs = [],size=1; var min=min||1; var max=max||min||1; while (arr.length > 0) { size = Math.min(max,Math.floor((Math.random()*max)+min)); arrs.push(arr.splice(0, size)); } return arrs; } }