isEmpty工具函数
在**项目开发中,需要在对未知数据类型做判空处理,期待空值列表:undefined、null、''、NaN、[]、{}
, 注意非空: 0、false
;
而常见的lodash.isEmpty
, !value
均不能直接满足我们的需求,那么我们需要抽离一个工具函数isEmpty;
接口返回表格字段的数据:
表格中使用switch: 0(或者false)表示禁用,1(或者true)表示启用,undefined 表示该字段无值;
表格中使用tag: 多个tag使用数组表示['王小虎'、'张春阳'], [] || null 表示该字段无值;
即在常见的后端接口返回表格数据中需要满足该需求定义的空值。
对比lodash.isEmpty
与!value
undefined |
null |
'' |
[] |
{} |
NaN |
0 |
false |
备注 |
|
lodash.isEmpty |
true |
true |
true |
true |
true |
true // 不支持判断number类型 |
true // 不支持判断number类型 |
true // 不支持判断Boolean类型 |
传入不支持数据类型时返回true |
!value |
true |
true |
true |
false |
false |
true |
true |
true |
传入其他数据类型时返回false |
在**项目开发中,需要在对未知数据类型做判空处理,期待空值列表:undefined、null、''、NaN、[]、{}
, 注意非空: 0、false
;
而常见的lodash.isEmpty
, !value
均不能直接满足我们的需求,那么我们需要抽离一个工具函数isEmpty;
// 空值: [undefined, null, NaN, [], {}], 注意非空:0, false;
function isEmpty(value) { switch (Object.prototype.toString.call(value)) { case '[object Undefined]': return value === void 0; case '[object Null]': return value === null; case '[object Number]': return isNaN(value); case '[object String]': return value === ""; case '[object Boolean]': return false; case '[object Object]': return Object.keys(value).length === 0; case '[object Array]': return value.length === 0; default: return false; } }