-
2020-04-26 15:07:02
如何判断一个对象是否为空
1、利用
Object.keys
方法 该方法会返回当前对象内所有返回一个数组,成员是参数对象自身的(不含继承的)所有可遍历(enumerable
)属性的键名。详情Object.keys
;
如果数组的长度不为空那么则说明对象不为空
使用方法如下:const obj = { name: '张三', age: 18, sex: '男' }; let arr = Object.keys(obj); // ['name', 'age', 'sex'] if(arr.length){ return false; } else { return true; }
抽成方法:
function checkObj(obj){ if (typeof obj != 'object') thorw new Error('参数不是一个可遍历对象'); let _arr = Object.keys(obj); return !!_arr.length; } var obj = {}; checkObj(obj) // false obj = { name: '张三' } checkObj(obj) // true obj = []; checkObj(obj) // false obj = [1]; checkObj(obj); // true obj = function(){}; checkObj(obj) // Uncaught Error: 参数不是可遍历对象;
2、使用
for...in
循环,如果对象可循环那么不为空,否则为空对象 ;前提:对象属性是可遍历:function checkObj(obj){ for(let item in obj){ return true; } return false; } var obj = {}; checkObj(obj) // false obj = {name:'张三'} checkObj(obj); obj = []; checkObj(obj); obj = [1]; checkObj(obj); obj = function(){} checkObj(obj) // false
更多相关内容 -
java 判断一个对象是否为空对象
2020-03-30 22:29:29最近项目中遇到一个问题,在用户没填数据的时候,我们需要接收从前端传过来的对象为null,但是前端说他们一个一个判断特别麻烦,只能传个空对象过来,我第一个想法就是可以通过反射来判断对象是否为空。 第一版: ...最近项目中遇到一个问题,在用户没填数据的时候,我们需要接收从前端传过来的对象为null,但是前端说他们一个一个判断特别麻烦,只能传个空对象过来,我第一个想法就是可以通过反射来判断对象是否为空。
第一版:
User.java
public class User { private String username; private Boolean active; private Long id; // 省略get和set方法 }
ReflectUtil.java
public class ReflectUtil { public static boolean isObjectNull(Object obj){ if (obj != null) { Class<?> objClass = obj.getClass(); Method[] declaredMethods = objClass.getDeclaredMethods(); if (declaredMethods.length > 0) { int methodCount = 0; // get 方法数量 int nullValueCount = 0; // 结果为空 for (Method declaredMethod : declaredMethods) { String name = declaredMethod.getName(); if (name.startsWith("get") || name.startsWith("is")){ methodCount += 1; try { Object invoke = declaredMethod.invoke(obj); if (invoke == null) { nullValueCount += 1; } } catch (IllegalAccessException | InvocationTargetException e){ e.printStackTrace(); } } } return methodCount == nullValueCount; } } return false; } }
TestReflect.java
public class TestReflect { public static void main(String[] args) { User user = new User(); System.out.println(ReflectUtil.isObjectNull(user)); } }
结果:
true
第一版 获取一个类的声明的方法,判断方法如果以get或者is开头就是get方法,然后通过反射调用改方法获取结果,再判断结果是否为空,如果结果为null的话就把nullValueCount+1,最后返回结果为空的值的数量和get方法数量比较的结果,如果两者数量相同则说明该对象为空,反之不为空。
第一版也可以判断一个对象是否为空,但前提是对象必须使用包装类,没有默认值的就不行了,当然你也可以根据类型和返回值结果来判断对象是否为空,但是如果想忽略某个属性不做判断,改起来就有点麻烦了。 后来想知道spring 的BeanUtils 是怎么实现属性复制的就看了一下,发现了新的方法,于是就有了第二版。第二版:
/** * 判断对象是否为空, * @param obj * @param ignoreProperties 忽略的属性 * @return 如果get 方法的数量等于 属性为空的数量 返回true,否则false */ public static boolean isNullObject(Object obj , String... ignoreProperties) throws IntrospectionException { if (obj != null) { Class<?> objClass = obj.getClass(); BeanInfo beanInfo = Introspector.getBeanInfo(objClass); PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors(); List<String> ignoreList = (ignoreProperties != null ? Arrays.asList(ignoreProperties) : null); int count = 1; // 结果为空的属性数量 初始化为1 去除Object的getClass方法 int propertyCount = propertyDescriptors.length; // 属性数量 if (ignoreList != null){ propertyCount -= ignoreList.size(); } for (PropertyDescriptor propertyDescriptor : propertyDescriptors) { Method readMethod = propertyDescriptor.getReadMethod(); String name = propertyDescriptor.getName(); if (readMethod != null && (ignoreList == null || !ignoreList.contains(name))) { Class<?> returnType = readMethod.getReturnType(); String typeName = returnType.getSimpleName(); Object invoke = null; try { invoke = readMethod.invoke(obj); if (invoke == null) { count+=1; }else { switch (typeName) { case "String": if ("".equals(invoke.toString().trim())) { count += 1; } break; case "Integer": if ((Integer) invoke <= 0) { count += 1; } break; case "int": if ((int) invoke <= 0) { count += 1; } break; case "double": if ((double) invoke <= 0.0d) { count += 1; } break; case "Double": if ((Double) invoke <= 0.0D) { count += 1; } break; case "float": if ((float) invoke <= 0.0f) { count += 1; } break; case "Float": if ((Float) invoke <= 0.0F) { count += 1; } break; case "Long": if ((Long) invoke <= 0L) { count += 1; } break; case "long": if ((long) invoke <= 0L) { count += 1; } break; } } } catch (IllegalAccessException | InvocationTargetException e) { e.printStackTrace(); } } } return propertyCount == count; } return true; }
第一版和第二版思想基本都是一样的,都是通过读方法去判断返回值是否为空,只不过第二版在第一版上加强了可以忽略属性这个功能。
通过spring 的beanutils发现PropertyDescriptor这个类,从名字看来是个属性描述器,描述属性相关的东西,通过属性描述器可以获取bean的属性名称,读写方法,使用起来还挺方便。
通过Introspector内省类的静态方法getBeanInfo(Class<?> beanClass)获取BeanInfo,然后通过BeanInfo对象的getPropertyDescriptors()就可以返回属性描述器。
由于没有太多研究就不多介绍了。
如果你还有其他方法判断一个对象是否为空请留言,谢谢能力有限,水平一般,如有错误,请多指出。
-
python使用any判断一个对象是否为空的方法
2021-02-03 17:02:53“python”判断字符串是否为空用什么方法?s为字符串 s.isalnum() 所有字符都是数字或者字母 s.isalpha() 所有字符都是字母 s.isdigit() 所有字符都是数字 s.islower() 所有字符都是小写 s.isupper() 所有字符都是...“python”判断字符串是否为空用什么方法?
s为字符串 s.isalnum() 所有字符都是数字或者字母 s.isalpha() 所有字符都是字母 s.isdigit() 所有字符都是数字 s.islower() 所有字符都是小写 s.isupper() 所有字符都是大写 s.istitle() 所有单词都是首字母大写,像标题 s.isspace() 所有字符女人就是要富养自己。你身上所有的焦虑和戾气,都是亏待出来的。不想被俗世浸透,那从现在开始,先爱上自己。小编们要对自己足够好,才能一直优雅到老。
python 判断字符串是否为空用什么方法学会知足,人生最大的烦恼是从最没有意义的比较开始,这世界总有不如你的人,也总有比你强的人,当小编哭泣小编没有鞋子穿的时候,小编发现有人却没有了脚。
目前小编想到的最好的方法就是使用内置函数len。len是计算对象内元素个数的,如果对象元素为空,会返回0。 当然还有其他方法。
python 判断字符串是否为空用什么方法?
如何判断python objects.get对象为空一辈子就像一场戏,太快乐,太悲伤,都是因为活得太入戏。
方法一:通过异常捕捉来实现逻辑 class FooClass:passk = FooClass()try: #do some thing you need print k.attexcept AttributeError as e: #error: has not attribute pass方法二:调用hasattr方法 hasattr(object, name)说明:判断对象object那时他说懂得你的深情厚意,以为自己终于掳获真心,到头来他牵的却是旁人的手。要到很久后你才明白吧,原来懂得是一回事,而选择,是另外一回事。
如何判断一个实体类是否为空
以java为例,判断一个实体类是否为空代码如下: /**判断对象或对象数组中每一个对象是否为空: 对象为null,字符序列长度为0,集合类、Map为empty */ public static boolean isNullOrEmpty(Object obj) { if (obj == null) return true; if (obj 小编是旅人,你是山水,无论多么喜欢也不能带走你,这就是遗憾。
如何判断python函数返回的是否是空做一个最单纯的人,走一段最幸福的路。其他的,交给命运。
小编不知道你这里的空是什么意思 是None还是‘’ 小编都都给你讲讲: None是一个空的对象,代表什么都没有。 而'',是一个字符串对象,代表一个空的字符串 如果返回值是None,你就用 if None:判断 如果返回‘’,你就用if len(‘’) == 0:判断发错了”又发错了”还是发错了”不知道这样搭讪好不好?
python字符串相等if,python判断字符串是否为空用这里面有几种空的表示: None是一个空的对象,代表什么都没有; '',是一个字符串对象,代表一个空的字符串; 这两者是有区别的,下面举例具体说明: reaCode = Noneif ( reaCode == None ): print "is null"if ( reaCode is None ): print "is 你忍了好久不联系对方,然后发现人家一点都没在忍。
python 判断文件是否为空if (a.txt不为空): upload(a.txt) #已写好的上传ftp函数 怎么写这个条件呢世界这么大,而找到真正喜欢可以落脚的地方,又实在的难。
文件为空是什么意思,文件不存在还是文件的内容为空,如果是不存在: try: ____upload(a.txt) except: ____pass 如果是内容为空: data = open(a.txt).read() len(data)一下,具体的,文件为空长度小编不知道是不是为0.你自己测试一下。
python中怎样判断一个dataframe非空?
DataFrame有一个属性为empty,直接用DataFrame.empty判断就行。 例如,你的DataFrame为test_df,有 如果test_df为空,则 test_df.empty 返回 True,反之 返回False。 注意empty后面不要加()。 学习tips:查好你自己所用的Pandas对应的版本。
PYTHON如何判断一个字典或者列表为空
if py_obj: print '非空' if py_obj is None: print '空' if not py_obj: 非空喜欢就去表白,大不了连朋友都做不成。做朋友又有什么用,小编又不缺朋友,小编缺你。
-
[JS] 如何判断一个对象是否为空
2021-09-16 12:14:47js判断空对象的几种方法 一、将对象转为字符串比较 let a = {} console.log(JSON.stringify(a) === '{}') //true 二、for…in循环 function isEmpty(obj) { for (let key in obj) { return false } return true...js判断空对象的几种方法
一、将对象转为字符串比较
let a = {} console.log(JSON.stringify(a) === '{}') //true
二、for…in循环
function isEmpty(obj) { for (let key in obj) { return false } return true } console.log(isEmpty(a)) //true
三、Object.getOwnPropertyNames()
Object.getOwnPropertyNames()方法返回一个由指定对象的所有自身属性的属性名(包括不可枚举属性但不包括Symbol值作为名称的属性)组成的数组。
用此方法判断空对象只需要判断返回的数组长度是否为零,为零的话就是空对象。console.log(Object.getOwnPropertyNames(a).length == 0) //true
四、Object.keys()
该方法属于 ES5 标准,IE9 以上和其它现代浏览器均支持。Object.keys() 方法会返回一个由一个给定对象的自身可枚举属性组成的数组,数组中属性名的排列顺序和使用 for…in 循环遍历该对象时返回的顺序一致。
用此方法判断空对象只需要判断返回的数组长度是否为零,为零的话就是空对象。let keys = Object.keys(a) console.log(keys.length == 0) //true
完整代码:
//js判断空对象的几种方法 //一、将对象转为字符串比较 let a = {} console.log(JSON.stringify(a) === '{}') //true //二、for…in循环 function isEmpty(obj) { for (let key in obj) { return false } return true } console.log(isEmpty(a)) //true //三、Object.getOwnPropertyNames() //Object.getOwnPropertyNames()方法返回一个由指定对象的所有自身属性的属性名 //(包括不可枚举属性但不包括Symbol值作为名称的属性)组成的数组。 //用此方法判断空对象只需要判断返回的数组长度是否为零,为零的话就是空对象。 console.log(Object.getOwnPropertyNames(a).length == 0) //true //四、Object.keys() //该方法属于 ES5 标准,IE9 以上和其它现代浏览器均支持。 //Object.keys() 方法会返回一个由一个给定对象的自身可枚举属性组成的数组, //数组中属性名的排列顺序和使用 for…in 循环遍历该对象时返回的顺序一致。 //用此方法判断空对象只需要判断返回的数组长度是否为零,为零的话就是空对象。 let keys = Object.keys(a) console.log(keys.length == 0) //true
运行结果:
-
如何判断一个对象是否为空{}
2019-05-28 12:34:57我们想要判断对象是否为空,像基本类型那样判断是不可以的, ==={} ?这样是错误的, 因为只是比较引用地址是否相同,所以可以采取下面的方法来进行判断 1.根据for...in遍历对象,如果存在则返回true,否则返回false... -
JS中如何判断一个对象是否为空对象
2018-07-03 21:58:341. 通过 for...in... 遍历属性 ,如果是空对象返回false, 否则返回 true 。例: var judgeObj = function(obj){ for(var item in obj){ return true; } return false;... 通过ES6新增的一个Ob... -
ES6 判断一个对象是否为空
2020-12-28 16:03:12ES6新增的一个方法 Object.keys(对象) Object.keys() 如果对象不为空,则返回一个给定对象的自身可枚举属性组成的数组 如果对象为空,则返回空数组 -
JavaScript判断一个对象是否为空
2018-11-04 18:10:32写一个函数 isEmptyObject,判断一个对象是不是空对象 function isEmptyObject(obj){ for(var item in obj){ return false } { return true } } console.log(isEmptyObject( {} )); //true console.... -
if 判断一个对象是否为空
2020-04-15 16:15:59如果我们的对象为空,他会返回一个空数组,如下: var a = {}; Object.keys(a) // [] 我们可以依靠Object.keys()这个方法通过判断它的长度来知道它是否为空。 if (Object.keys(obj).length === 0... -
小程序 判断一个对象是否为空
2020-04-21 13:36:11如果我们的对象为空,会返回一个空的数组,如下: var temp = {}; Object.keys(temp) // [] 我们可以依靠Object.keys()这个方法通过判断它的长度来判断它是否为空 if(Object.keys(object).length ... -
如何判断一个对象是否为空对象:{}
2018-12-05 13:46:10由于项目中路由地址比较多,总不能挨个去遍历router.js去判别是什么地址,到底有没有传参,因此我想着是不是可以通过this.$route.params来进行一个判断,如果this.$route.params是空对象则表示无参数,如果this.$... -
如何判断一个对象的内容是否为空
2021-02-28 19:04:52原因使用Controller的...搜索一番,找到一个不错的思路:利用反射获取所有字段,再判断内容是否为null。初步代码如下/*** 注意,如果order是null,也返回true。**@paramorder*@return*/private booleanisOrderAll... -
小程序判断一个对象是否为空
2018-09-13 13:13:24如果我们的对象为空,他会返回一个空数组,如下: var a = {} Object.keys(a) // [] 我们可以依靠Object.keys()这个方法通过判断它的长度来知道它是否为空。 if (Object.keys(object).leng... -
python判断一个对象是否为空的方法
2018-03-03 21:58:26判断对象是否为空:复制代码 代码如下:>>> eth = {"eth0″:"192.168.1.1″}>>> any(eth)True>>> eth = {}>>> any... -
java判断对象是否为空
2021-02-12 10:58:03把现实世界中的对象抽象地体现在编程世界中,一个对象代表了某个具体的操作。一个个对象最终组成了完整的程序设计,这些对象可以是独立存在的,也可以是从别的对象继承过来的。对象之间通过相互作用传递信息,实现... -
JS如何判断一个对象是否为空、是否有某个属性
2021-01-29 11:14:06一、js判断一个对象是否为空 方法一: let obj1 = {} let obj2 = {a:1} function empty(obj){ for (let key in obj){ return false; //非空 } return true; //为空 } console.log(empty(obj1)) //true为空 console.... -
Java 如何判断一个对象是否为空或者Null
2020-12-10 00:14:44字符串作为特殊的对象类 我们有的时候要判断是否为null或者空 直接用 if (str != null && str.equals("")) {} 即可。 其他对象(容器)的话 就直接: if (obj != null){} 就完事了 ... -
Java中判断对象是否为空的方法的详解
2021-02-12 10:58:02首先来看一下工具StringUtils的判断方法:一种是org.apache....这两种StringUtils工具类判断对象是否为空是有差距的:StringUtils.isEmpty(CharSequence cs); //org.apache.commons.lang3包下的StringUtils类,判... -
js判断一个对象是否是空对象
2022-03-21 14:26:14js如何判断一个对象是否是空对象,本文给出三个方法。 二、采用for…in…进行遍历 最常见的思路就是使用for....in...遍历属性,为真则为非空对象,为假则为空对象。 <script> function isEmptyObj(obj) { ... -
js 判断一个 Object 对象是否为空
2019-04-22 17:27:07判断一个对象是否为空对象,本文给出三种判断方法: 1.最常见的思路,for...in...遍历属性,为真则为“非空数组”;否则为“空数组” for (var i in obj) { // 如果不为空,则会执行到这一步,返回true return ... -
如何判断一个对象里的属性是否都为空的
2021-04-22 13:20:17怎么判断一个对象里的属性是否都为空的怎么判断一个对象里的属性是否都为空的,或者判断该对象是否是一个实体!------解决方案--------------------引用:怎么判断一个对象里的属性是否都为空的,或者判断该对象是否... -
js判断一个对象是否为空,循环对象操作
2020-02-04 11:47:36Object.keys()方法会返回一个由一个给定对象...判断一个对象是否为空,可是通过Object.keys()这个方法通过判断它的长度来进行判断 if (Object.keys(object).length === 0){ return '空的' } 循环一个数组操作,... -
js 判断一个 object 对象是否为空
2017-09-27 15:46:51js 判断一个 object 对象是否为空转载原文判断一个对象是否为空对象,本文给出三种判断方法:1.最常见的思路,for...in... 遍历属性,为真则为“非空数组”;否则为“空数组”for (var i in obj) { // 如果不为空,... -
Java判断对象是否为空
2021-07-27 20:25:36Java方法isEmpty汇总问题描述参考资料 问题描述 。 参考资料 java判断一个字符串是否为空,isEmpty和isBlank的区别 Java判断对象是否为空的方法:isEmpty,null," " Java中判断数组是否为空? -
java对象如何判断是否为空
2021-03-06 15:47:58下面我们来看一下java中判断对象是否为空的方法:(推荐:java视频教程)首先来看一下工具StringUtils的判断方法:一种是org.apache.commons.lang3包下的;另一种是org.springframework.util包下的。这两种StringUtils... -
js判断对象是否为空
2022-03-02 10:51:10js判断对象是否为空 JSON.stringify()。将 JavaScript 值转换为 JSON 字符串,再判断该字符串是否为"{}" var data = {}; var b = (JSON.stringify(data) == "{}"); alert(b); //true 为空, false 不为空` es6的... -
js 判断对象是否为空
2022-02-15 14:07:42js 判断对象是否为空的四种方法 -
js 判断一个对象是否为空方法总结
2018-10-23 20:41:50通常情况下,工作中写逻辑的时候都会用到判断一个对象是否为空的方法,巧的是今天正好有人问我这个问题,我竟然没回答上来,很尴尬,决定研究一下总结下来,之前研究过但是久了不用就生疏了!大意啊 1.将json对象...