非空校验 | 类型判断

2022-12-27  本文已影响0人  码农私房菜

基本数据类型: number、string、boolean、undefined、null、 ES6:symbol 独一无二的值、 ES10:bigint

引用数据类型: Object、Array、Function

/**
 * 非空校验 | 类型判断
 * @param param 非空校验数据
 * @returns `{
        value: 值,
        isEmpty: 值无效:true , 值有效:false,
        type: 值类型,
    }`
 */

export function checkingValidityOrType(param: any) {
    const paramType = Object.prototype.toString.call(param).slice(8, -1)

    const obj: any = {
        value: param,
        isEmpty: false,
        type: paramType,
    }

    switch (paramType) {
        case 'String':
            const trimParam = ('' + param).trim().toLowerCase()

            if (trimParam + '' === 'null') {
                obj.value = null
                obj.isEmpty = true
            } else if (trimParam + '' === 'undefined') {
                obj.value = undefined
                obj.isEmpty = true
            } else if (trimParam + '' === 'nan') {
                obj.value = NaN
                obj.isEmpty = true
            } else if (trimParam + '' === '') {
                obj.value = ''
                obj.isEmpty = true
            } else {
                obj.value = param
            }
            break

        case 'Number':
            obj.isEmpty = ('' + param).trim().toLowerCase() !== 'nan' ? false : true
            break

        case 'Boolean':
            obj.isEmpty = param
            break

        case 'Null':
            obj.value = null
            obj.isEmpty = true
            break

        case 'Undefined':
            obj.value = undefined
            obj.isEmpty = true
            break
        case 'Array':
            obj.isEmpty = !param.length
            break
        case 'Object':
            obj.isEmpty = JSON.stringify(param) === '{}'
            break
        case 'Function':
            break
        case 'Symbol':
            break
        case 'BigInt':
            obj.isEmpty = param ? false : true
            break

        default:
            break
    }

    return obj
}
上一篇 下一篇

猜你喜欢

热点阅读