146 lines
3.8 KiB
TypeScript
146 lines
3.8 KiB
TypeScript
/**
|
|
* 工具
|
|
*/
|
|
|
|
|
|
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;
|
|
}
|
|
}
|