| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- import {_decorator, Component, math, Node} from 'cc';
- const {ccclass, property} = _decorator;
- @ccclass('ArrUtils')
- export class ArrUtils {
- public static shuffleArray<T>(array: T[]): T[] {
- // 复制数组以避免直接修改原数组
- let arrayCopy = [...array];
- // 使用sort方法和一个随机比较函数来随机排序数组
- arrayCopy.sort(() => Math.random() - 0.5);
- return arrayCopy;
- }
- /**
- * 数组升序
- * @param arr
- */
- public static upOrder(arr: any[]) {
- arr.sort((a, b) => a - b)
- }
- /**
- * 数组降序
- * @param arr
- */
- public static downOrder(arr: any[]) {
- arr.sort((a, b) => b - a)
- }
- /**
- * 每次返回数组的随机一个序号,但是序号不重复
- * @param tArr 目标数组
- * @param indexSet 已经生成的序号集合
- * @returns 返回随机序号
- */
- public static getRandomUniqueIndex(tArr: any[], indexSet: Set<number>) {
- if (indexSet.size > 0) {
- const bArr: any[] = new Array()
- tArr.forEach((val, index) => {
- if (!indexSet.has(index)) {
- bArr.push(index)
- }
- })
- const i = math.randomRangeInt(0, bArr.length - 1)
- indexSet.add(bArr[i])
- return bArr[i]
- } else {
- const i = math.randomRangeInt(0, tArr.length - 1)
- indexSet.add(i)
- return i
- }
- }
- /**
- * 删除set最后一个元素
- * @param set
- * @returns
- */
- public static removeLastSet(set: Set<any>): boolean {
- // 将 Set 转换为数组
- const itemsArray = Array.from(set);
- // 检查数组是否为空
- if (itemsArray.length === 0) {
- return false; // 或者你可以抛出一个错误,表示没有元素可以删除
- }
- // 获取最后一个元素的值
- const lastElement = itemsArray[itemsArray.length - 1];
- // 从 Set 中删除该元素
- set.delete(lastElement);
- return true; // 表示删除成功
- }
- }
|