// 防抖函数 function debounce(func, wait) { let timeout; return function (...args) { // 使用剩余参数语法接收所有传入的参数 clearTimeout(timeout); // 清除上一个定时器 timeout = setTimeout(() => { func.apply(this, args); // 使用apply来调用原始函数,并传入当前this值和所有参数 }, wait); }; } // 获取页面元素 const getElement = (id) => { const element = echarts.init( document.getElementById(id) ); return element } // 获取url参数 const getQueryString = () => { let urlStr = window.location.href.split("?")[1]; const urlSearchParams = new URLSearchParams(urlStr); const result = Object.fromEntries(urlSearchParams.entries()); return result; } // 辅助方法:判断是否为对象(非 null 且不是数组) const isObject = (obj) => { return obj !== null && typeof obj === 'object' && !Array.isArray(obj); } // 深度比较两个对象是否相同 const isObjectEqual = (obj1, obj2) => { const keys1 = Object.keys(obj1); const keys2 = Object.keys(obj2); if (keys1.length !== keys2.length) return false; for (const key of keys1) { const val1 = obj1[key]; const val2 = obj2[key]; if (typeof val1 !== typeof val2) return false; if (Array.isArray(val1) && Array.isArray(val2)) { if (!isArrayEqual(val1, val2)) return false; } else if (isObject(val1) && isObject(val2)) { if (!isObjectEqual(val1, val2)) return false; } else { if (val1 !== val2) return false; } } return true; } const isArrayEqual = (arr1, arr2) => { // 先判断类型 if (!Array.isArray(arr1) || !Array.isArray(arr2)) return false; if (arr1.length !== arr2.length) return false; for (let i = 0; i < arr1.length; i++) { const val1 = arr1[i]; const val2 = arr2[i]; if (typeof val1 !== typeof val2) return false; if (Array.isArray(val1) && Array.isArray(val2)) { // 递归比较数组 if (!isArrayEqual(val1, val2)) return false; } else if (isObject(val1) && isObject(val2)) { // 比较对象 if (!isObjectEqual(val1, val2)) return false; } else { // 其他类型(如字符串、数字、布尔)直接比较 if (val1 !== val2) return false; } } return true; } // 格式化日期 const formatDate = (t, str) => { var obj = { yyyy: t.getFullYear(), yy: ("" + t.getFullYear()).slice(-2), M: t.getMonth() + 1, MM: ("0" + (t.getMonth() + 1)).slice(-2), d: t.getDate(), dd: ("0" + t.getDate()).slice(-2), H: t.getHours(), HH: ("0" + t.getHours()).slice(-2), h: t.getHours() % 12, hh: ("0" + (t.getHours() % 12)).slice(-2), m: t.getMinutes(), mm: ("0" + t.getMinutes()).slice(-2), s: t.getSeconds(), ss: ("0" + t.getSeconds()).slice(-2) }; return str.replace(/([a-z]+)/ig, function ($1) { return obj[$1]; }); }