检查一个对象(Object)是否为空,即不包含任何元素。Javascript 中的对象就是一个字典,其中包含了一系列的键值对(Key Value Pair)。检查一个对象是否为空,等价于检查对象中有没有键值对。
1、如字典,字典本身就是Object,定义为{},无任何key时为空
2、如数组,定义为[],无任何元素时认为为空
3、如String,为''或为null或为undefined时认为空
这里想到了之前在jquery中判断对象是否为空的方法:
-
- function isEmptyObject(obj) {
- for (var key in obj) {
- return false;
- }
- return true;
- }
它充分利用了Object的迭代器来实现的。但是无法对字符串为空进行判空调用!而我的需求为,类型不定!这是重点,即我必须有一个固定的方法,无论传入的类型是什么,只要满足以上3点我就认为是空的!为什么会这样要求呢?这个与产品功能有关,我的页面内容是不定的,类型不定、数据不定的动态表单!
针对这种情况,我不可能一一去判断类型判空处理,所以,进行了新的探索尝试,贴出我的实现:
- export function isnull(val) {
- if (!val || val === undefined) {
- return true
- } else if (JSON.stringify(val) === '{}' || JSON.stringify(val) === '[]') {
- return true
- }
- return false
- }
为了使用方便,给全局的VUE绑定上这个方法:
- import {isnull} from '@/utils/null';
- Vue.prototype.isnull = isnull
在某个页面中使用:
- if (this.isnull(p.component.config.defaultValue))
- {
- //数据为空的逻辑,如提示
- }
这样无论我传入的数据类型是什么,完全满足我的页面需要!