| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107 |
- // 防抖函数
- 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];
- });
- }
|