验证手机号

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)]
}

持续更新中...

标签: Javascript

评论已关闭