From 41b55a60b02d1e77ce1bb2ac43de1c964638c033 Mon Sep 17 00:00:00 2001 From: wangxuhe <1053066913@qq.com> Date: Fri, 15 Aug 2025 14:47:16 +0800 Subject: [PATCH 1/2] =?UTF-8?q?Add=EF=BC=9A=20ObjectUtil=E4=B8=AD=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=E6=8E=A5=E5=8F=A3=EF=BC=8C=E6=98=AF=E5=90=A6=E4=B8=BA?= =?UTF-8?q?=E9=9D=9E=E6=B3=95=E5=AF=B9=E8=B1=A1=EF=BC=8C=E5=8F=AF=E7=94=A8?= =?UTF-8?q?=E4=BA=8E=E6=A3=80=E6=B5=8Bnumber=E3=80=81string=E3=80=81array?= =?UTF-8?q?=E3=80=81object=E7=AD=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- assets/core/utils/ObjectUtil.ts | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/assets/core/utils/ObjectUtil.ts b/assets/core/utils/ObjectUtil.ts index 673ae20..b902147 100644 --- a/assets/core/utils/ObjectUtil.ts +++ b/assets/core/utils/ObjectUtil.ts @@ -60,4 +60,25 @@ export class ObjectUtil { static copy(target: object): object { return JSON.parse(JSON.stringify(target)); } + + /** + * @function 检测是否为非法对象,比如"",null, undefined, NaN, [], {} + * @param {any} obj 任意基础数据对象,如:number、string、array、object等 + * @returns boolean 非法为trre, 否则为false + */ + static isIllegalObject(obj: any): boolean { + // 检查是否为空或未定义 + if (obj == null || obj == undefined) return true; + // 检查是否是特殊值 + if (obj === Infinity || obj === -Infinity) return true; + // 检测是否包含空格的字符串 + if (typeof obj === "string" && obj.trim() === "") return true; + // 检查是否是无效的数字 + if (Number.isNaN(obj)) return true; + // 检查是否是空数组 + if (Array.isArray(obj) && obj.length <= 0) return true; + // 检查是否是空对象 + if (typeof (obj) == "object" && Object.keys(obj).length <= 0) return true; + return false; + } } -- Gitee From bb2bd8bc635011bd179c20391ac39f4d117d6fc4 Mon Sep 17 00:00:00 2001 From: wangxuhe <1053066913@qq.com> Date: Sat, 16 Aug 2025 11:04:17 +0800 Subject: [PATCH 2/2] =?UTF-8?q?Add=EF=BC=9A=20ArrayUtil=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E9=9A=8F=E6=9C=BA=E6=89=93=E4=B9=B1=E6=95=B0=E7=BB=84=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=EF=BC=8C=E5=A6=82=EF=BC=9A[1,2,3,4,5]=20-->=20[5,=201?= =?UTF-8?q?,=202,=203,=204]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- assets/core/utils/ArrayUtil.ts | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/assets/core/utils/ArrayUtil.ts b/assets/core/utils/ArrayUtil.ts index 1d7eb75..cd26962 100644 --- a/assets/core/utils/ArrayUtil.ts +++ b/assets/core/utils/ArrayUtil.ts @@ -97,13 +97,32 @@ export class ArrayUtil { } /** - * 获取随机数组成员 + * 获取数组中随机成员 * @param array 目标数组 */ static getRandomValueInArray(array: any[]): any { return array[Math.floor(Math.random() * array.length)]; } + /** + * 随机打乱数组 + * @param array 目标数组 + * @example [1,2,3,4,5] --> [5, 1, 2, 3, 4] + */ + static shuffleArray(array: T[]): T[] { + // 创建一个原数组的副本 + const newArr = [...array]; + + // 使用Fisher-Yates 洗牌算法打乱新数组 + for (let i = newArr.length - 1; i > 0; i--) { + const j = Math.floor(Math.random() * (i + 1)); + [newArr[i], newArr[j]] = [newArr[j], newArr[i]]; + } + + // 返回打乱后的新数组 + return newArr; + } + /** * 获取连续数字数组, 范围在[start, end]之间 * @param start 开始数字 -- Gitee