验证手机号
export function checkPhone(value) {
return /^1[0-9]{10}$/.test(value)
}
验证二代身份证号
export function checkIDCardNumber(value){
return /(^\d{18}$)|(^\d{17}(\d|X|x)$)/.test(value)
}
对象转换查询条件
export function objectToQuery(queryParameters) {
if (queryParameters) {
return Object.entries(queryParameters).reduce((queryString, [key, val], index) => {
const symbol = queryString.length === 0 ? '?' : '&'
queryString += ['string', 'number', 'boolean'].includes(typeof val) ?
`${symbol}${key}=${val}` : ''
return queryString
}, '')
}
return ''
}
日期格式化
export function dateFormat(fmt, date) {
let ret
const opt = {
'y+': date.getFullYear().toString(), // 年
'M+': (date.getMonth() + 1).toString(), // 月
'd+': date.getDate().toString(), // 日
'H+': date.getHours().toString(), // 时
'm+': date.getMinutes().toString(), // 分
's+': date.getSeconds().toString() // 秒
// 有其他格式化字符需求可以继续添加,必须转化成字符串
}
for (let k in opt) {
ret = new RegExp('(' + k + ')').exec(fmt)
if (ret) {
fmt = fmt.replace(
ret[1],
ret[1].length == 1
? opt[k]
: opt[k].padStart(ret[1].length, '0')
)
}
}
return fmt
}
console.log(dateFormat('yy-MM-dd HH:mm:ss',new Date()))
深拷贝
export function deepCopy(obj) {
let result = {}
for (let key in obj) {
switch (true) {
// 处理为null的情况
case obj[key] === null: {
result[key] = null
break
}
// 处理值是自己的情况
case obj[key] === obj: {
result[key] = result
break
}
// 处理值是对象的情况
case typeof obj[key] === 'object': {
result[key] = deepCopy(obj[key])
break
}
// 其他情况
default: {
result[key] = obj[key]
}
}
}
return result
}
防抖与节流
// 防抖
export function debounce(func, wait){
let timeout = null
return function(){
// 使this指向不变并能获取到e参数
let context = this
let args = arguments
if(timeout){
clearTimeout(timeout)
}
timeout = setTimeout(() => {
func.apply(context, args)
}, wait)
}
}
// 节流
export function throttle(func, wait) {
let timeout
return function() {
let context = this
let args = arguments
if (! timeout) {
timeout = setTimeout(() => {
timeout = null
func.apply(context, args)
}, wait)
}
}
}
验证类型
export function typeOf(obj) {
const maps = {
'[object Boolean]': 'boolean',
'[object Number]': 'number',
'[object String]': 'string',
'[object Function]': 'function',
'[object Array]': 'array',
'[object Date]': 'date',
'[object RegExp]': 'regExp',
'[object Undefined]': 'undefined',
'[object Null]': 'null',
'[object Object]': 'object',
'[object Symbol]': 'symbol'
}
return maps[toString.call(obj)]
}
持续更新中...