let matchNumberStr = ['0',] // 部分关键字转换为boolean值 let falseField = ['false','False','FALSE','null','Null','NULL','undefined','Undefined']; let trueField = ['true','True','TRUE']; // 类型转换 function toString(){ // 情况1 非对象,直接调用内部值 } // 转换为number类型,先用toBoolean转换为布尔类型 function toNumber(v){ if(isString(v)){ if(falseField.includes(v)){ v = toBoolean(v) }else if (trueField.includes(v)){ v = toBoolean(v) } } if(!v){ return 0; } let r = Number(v); return isNaN(r)?0:r; } // 考虑字段类型 function toBoolean(v){ // 字符串类型 if (isString(v)){ if(falseField.includes(v)){ return false }else if (trueField.includes(v)){ return true }else{ Boolean(v) } } } function isArray(v){ return v instanceof Array } function isString(v){ return v instanceof String || typeof v === 'string' } function isNumber(v){ return v instanceof Number } function isObject(v){ return v instanceof Object } // 判断 obj 或者 arr 是否为空 , 允许为0, 不允许空字符串 function isEmpty(v){ if(isArray(v)){ return v.length === 0 }else if(isObject(v)){ return Object.keys(v).length === 0 }else if(v === 0){ return false; }else{ return !v } } // 判断数据是否存在,不允许为空字符串,空对象与空数组, 允许为 0 module.exports = { toNumber, toString, toBoolean, isEmpty }