import {_decorator, Component, math, Node} from 'cc'; const {ccclass, property} = _decorator; @ccclass('ArrUtils') export class ArrUtils { public static shuffleArray(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) { 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): 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; // 表示删除成功 } }