cnwy-js-util
Version:
js常见的函数工具库
83 lines (73 loc) • 2.08 kB
JavaScript
/**
*
* @param {*} 防抖
* @param {*} wait
* @param {*} immediate
* @returns
*/
export function debounce(func, wait, immediate = false) {
let timeout;
function applyFun() {
const context = this;
const args = arguments;
clearTimeout(timeout);
timeout = setTimeout(function () {
func.apply(context, args);
}, wait);
}
if (immediate) {
applyFun();
}
return applyFun;
}
/**
* @name 节流
* @param {Function} func
* @param {number} wait
* @return {*}
*/
export function throttle(func, wait) {
let context, args;
let previous = 0;
return function () {
let now = +new Date();
context = this;
args = arguments;
if (now - previous > wait) {
func.apply(context, args);
previous = now;
}
};
}
/**
* @name 手机号加密
* @param {string|number<phone>} phoneNumber
* @returns
*/
export function encryptPhoneNumber(phoneNumber) {
// 确保手机号码是字符串类型
phoneNumber = String(phoneNumber);
// 移除手机号码中可能存在的非数字字符,如分隔符等
phoneNumber = phoneNumber.replace(/\D/g, '');
// 确定加密的位数
let encryptionLength = 0;
if (phoneNumber.length > 8) {
encryptionLength = 4; // 如果长度大于8位,加密中间4位
} else if (phoneNumber.length >= 6) {
encryptionLength = 3; // 如果长度在6到8位之间,加密中间3位
}
// 如果手机号码长度小于6位,则不加密
if (encryptionLength === 0) {
return phoneNumber;
}
// 计算加密部分的起始位置
const start = Math.floor((phoneNumber.length - encryptionLength) / 2);
const end = start + encryptionLength;
// 构建加密后的手机号码
let encryptedPhoneNumber = phoneNumber.slice(0, start);
for (let i = 0; i < encryptionLength; i++) {
encryptedPhoneNumber += '*';
}
encryptedPhoneNumber += phoneNumber.slice(end);
return encryptedPhoneNumber;
}