UNPKG

cnwy-js-util

Version:

js常见的函数工具库

83 lines (73 loc) 2.08 kB
/** * * @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; }