forked from SmartBench/CMVR-IOT-UI
95 lines
2.6 KiB
JavaScript
95 lines
2.6 KiB
JavaScript
|
|
/**
|
|||
|
|
* 防抖函数(在指定时间内,如果事件被频繁触发,则只有在最后一次触发后指定的时间间隔内没有再次触发时,才执行函数)
|
|||
|
|
*/
|
|||
|
|
export function debounce(func, delay) {
|
|||
|
|
let timer; // 用于存储定时器的标识符
|
|||
|
|
return function (...args) {
|
|||
|
|
// 每次触发事件时,清除之前的定时器
|
|||
|
|
clearTimeout(timer);
|
|||
|
|
// 设置新的定时器
|
|||
|
|
timer = setTimeout(() => {
|
|||
|
|
func.apply(this, args); // 执行目标函数
|
|||
|
|
}, delay);
|
|||
|
|
};
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* 节流函数(在指定时间内,无论事件触发多少次,只执行一次函数)
|
|||
|
|
*/
|
|||
|
|
export function throttle(func, limit) {
|
|||
|
|
let inThrottle;
|
|||
|
|
return function (...args) {
|
|||
|
|
if (!inThrottle) {
|
|||
|
|
func.apply(this, args);
|
|||
|
|
inThrottle = true;
|
|||
|
|
setTimeout(() => {
|
|||
|
|
inThrottle = false;
|
|||
|
|
}, limit);
|
|||
|
|
}
|
|||
|
|
};
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/*
|
|||
|
|
* 找出两个对象之间的不同点
|
|||
|
|
* */
|
|||
|
|
export function findDifferences(oldData, newData) {
|
|||
|
|
// 创建一个结果对象来存储不同的键值对
|
|||
|
|
const differences = {};
|
|||
|
|
|
|||
|
|
// 获取两个对象的所有键
|
|||
|
|
const keys = new Set([...Object.keys(oldData), ...Object.keys(newData)]);
|
|||
|
|
|
|||
|
|
// 遍历所有键
|
|||
|
|
keys.forEach((key) => {
|
|||
|
|
// 检查两个对象中该键的值是否不同
|
|||
|
|
if (oldData[key] !== newData[key]) {
|
|||
|
|
differences[key] = newData[key];
|
|||
|
|
}
|
|||
|
|
});
|
|||
|
|
return differences;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/*
|
|||
|
|
* 将对象中的数值转换为字符串
|
|||
|
|
* */
|
|||
|
|
export function convertNumbersToStringAndRemoveNulls(obj) {
|
|||
|
|
const result = {};
|
|||
|
|
for (const key in obj) {
|
|||
|
|
if (obj.hasOwnProperty(key)) {
|
|||
|
|
const value = obj[key];
|
|||
|
|
// 如果值为 null,跳过该属性
|
|||
|
|
if (value === null) {
|
|||
|
|
continue;
|
|||
|
|
}
|
|||
|
|
// 检查值是否为数字
|
|||
|
|
if (typeof value === 'number') {
|
|||
|
|
result[key] = value.toString();
|
|||
|
|
} else {
|
|||
|
|
result[key] = value;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
return result;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/*
|
|||
|
|
* 参数编码拼接
|
|||
|
|
* */
|
|||
|
|
export function appendParamsToPath(path, params) {
|
|||
|
|
// 创建一个 URLSearchParams 对象
|
|||
|
|
const searchParams = new URLSearchParams();
|
|||
|
|
|
|||
|
|
// 遍历参数对象,将每个键值对添加到 URLSearchParams 中
|
|||
|
|
for (const key in params) {
|
|||
|
|
if (params.hasOwnProperty(key)) {
|
|||
|
|
const value = params[key];
|
|||
|
|
// 对值进行编码
|
|||
|
|
searchParams.append(key, encodeURIComponent(value));
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// 将查询字符串拼接到路径后面
|
|||
|
|
const queryString = searchParams.toString();
|
|||
|
|
return `${path}?${queryString}`;
|
|||
|
|
}
|