games/ChaoJiJieYaGuan_LiuBianXing/assets/Script/Tools/Utils.ts

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;
}
}