精华内容
下载资源
问答
  • js 判断一个 object 对象是否为空

    万次阅读 多人点赞 2017-09-27 15:46:51
    js 判断一个 object 对象是否为空转载原文判断一个对象是否为空对象,本文给出三种判断方法:1.最常见的思路,for...in... 遍历属性,真则“非空数组”;否则数组”for (var i in obj) { // 如果不为空,...

    js 判断一个 object 对象是否为空

    转载原文

    判断一个对象是否为空对象,本文给出三种判断方法:

    1.最常见的思路,for...in... 遍历属性,为真则为“非空数组”;否则为“空数组”

    for (var i in obj) { // 如果不为空,则会执行到这一步,返回true
        return true
    }
    return false // 如果为空,返回false

    2.通过 JSON 自带的 stringify() 方法来判断:

    JSON.stringify() 方法用于将 JavaScript 值转换为 JSON 字符串。

    if (JSON.stringify(data) === '{}') {
        return false // 如果为空,返回false
    }
    return true // 如果不为空,则会执行到这一步,返回true

    这里需要注意为什么不用 toString(),因为它返回的不是我们需要的。

    var a = {}
    a.toString() // "[object Object]"

    3.ES6 新增的方法 Object.keys():

    Object.keys() 方法会返回一个由一个给定对象的自身可枚举属性组成的数组。

    如果我们的对象为空,他会返回一个空数组,如下:

    var a = {}
    Object.keys(a) // []

    我们可以依靠Object.keys()这个方法通过判断它的长度来知道它是否为空。

    if (Object.keys(object).length === 0) {
        return false // 如果为空,返回false
    }
    return true // 如果不为空,则会执行到这一步,返回true

    作者:言墨儿
    链接:http://www.jianshu.com/p/972d0f277d45

    转载补充:

    原文中的代码,是写在一个 function 中的。类似这样:

    function checkNullObj (obj) {
        if (Object.keys(obj).length === 0) {
            return false // 如果为空,返回false
        }
        return true // 如果不为空,则会执行到这一步,返回true
    }

    但这样写,还是太累赘了。可以写成这样:

    function checkNullObj (obj) {
        return Object.keys(obj).length === 0
    }

    哈~

    展开全文
  • 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()就可以返回属性描述器。
    由于没有太多研究就不多介绍了。
    如果你还有其他方法判断一个对象是否为空请留言,谢谢

    能力有限,水平一般,如有错误,请多指出。

    展开全文
  • 如何判断一个对象是否为空{}

    万次阅读 2019-05-28 12:34:57
    我们想要判断对象是否为空,像基本类型那样判断是不可以的, ==={} ?这样是错误的, 因为只是比较引用地址是否相同,所以可以采取下面的方法来进行判断 1.根据for...in遍历对象,如果存在则返回true,否则返回false...

    我们想要判断对象是否为空,像基本类型那样判断是不可以的, ==={} ?这样是错误的,
    因为只是比较引用地址是否相同,所以可以采取下面的方法来进行判断

    1.根据for...in遍历对象,如果存在则返回true,否则返回false

    for ( let i in obj) {
    	return true;
    }
    return false
    

    2.利用JSON自带的JSON.stringify()方法来判断
    大概思路就是转化为字符串’{}'来进行判断

    if (JSON.stringify(obj) === '{}') {
    	return true;
    }
    return false;
    

    3.利用ES6中Object.keys()来进行判断 (推荐)
    Object.keys()方法会返回一个由一个给定对象的自身可枚举属性组成的数组。
    如果我们的对象为空,他会返回一个空数组。

    Object.keys(obj).length === 0 ? '空' : '不为空'
    
    展开全文
  • js 判断一个 Object 对象是否为空

    千次阅读 2019-04-22 17:27:07
    判断一个对象是否为空对象,本文给出三种判断方法: 1.最常见的思路,for...in...遍历属性,真则“非空数组”;否则数组” for (var i in obj) { // 如果不为空,则会执行到这一步,返回true return ...

    参考一:

    判断一个对象是否为空对象,本文给出三种判断方法:

    1.最常见的思路,for...in... 遍历属性,为真则为“非空数组”;否则为“空数组”

    for (var i in obj) { // 如果不为空,则会执行到这一步,返回true
        return true
    }
    return false // 如果为空,返回false
    •  

    2.通过 JSON 自带的 stringify() 方法来判断:

    JSON.stringify() 方法用于将 JavaScript 值转换为 JSON 字符串。

    if (JSON.stringify(data) === '{}') {
        return false // 如果为空,返回false
    }
    return true // 如果不为空,则会执行到这一步,返回true

    这里需要注意为什么不用 toString(),因为它返回的不是我们需要的。

    var a = {}
    a.toString() // "[object Object]"

    3.ES6 新增的方法 Object.keys():

    Object.keys() 方法会返回一个由一个给定对象的自身可枚举属性组成的数组。

    如果我们的对象为空,他会返回一个空数组,如下:

    var a = {}
    Object.keys(a) // []

    我们可以依靠Object.keys()这个方法通过判断它的长度来知道它是否为空。

    if (Object.keys(object).length === 0) {
        return false // 如果为空,返回false
    }
    return true // 如果不为空,则会执行到这一步,返回true

    转载补充:

    原文中的代码,是写在一个 function 中的。类似这样:

    function checkNullObj (obj) {
        if (Object.keys(obj).length === 0) {
            return false // 如果为空,返回false
        }
        return true // 如果不为空,则会执行到这一步,返回true
    }

    但这样写,还是太累赘了。可以写成这样:

     function checkNullObj (obj) {

       return Object.keys(obj).length

     }

    或者:

    function checkNullObj (obj) {
        return Object.keys(obj).length === 0
    }

    参考二:

    Object.getOwnPropertyNames()方法
    此方法是使用Object对象的getOwnPropertyNames方法,获取到对象中的属性名,存到一个数组中,返回数组对象,我们可以通过判断数组的length来判断此对象是否为空
    注意:此方法不兼容ie8,其余浏览器没有测试
    var data = {};
    var arr = Object.getOwnPropertyNames(data);
    alert(arr.length == 0);//true


    参考三:

    jQuery.isEmptyObject()
    描述:检查对象是否为空(不包含枚举属性)。

    console.info($.isEmptyObject({}));            //true
    console.info($.isEmptyObject({"ID":"1"}));    //false
    console.info($.isEmptyObject(new Object()));  //true
     

     

    展开全文
  • JS中如何判断一个对象是否为空对象

    万次阅读 2018-07-03 21:58:34
    1. 通过 for...in... 遍历属性 ,如果是空对象返回false, 否则返回 true 。例: var judgeObj = function(obj){ for(var item in obj){ return true; } return false;... 通过ES6新增的一个Ob...
  • 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....
  • js 判断一个对象是否为空方法总结

    千次阅读 2018-10-23 20:41:50
    通常情况下,工作中写逻辑的时候都会用到判断一个对象是否为空的方法,巧的是今天正好有人问我这个问题,我竟然没回答上来,很尴尬,决定研究一下总结下来,之前研究过但是久了不用就生疏了!大意啊 1.将json对象...
  • 判断一个对象是否为空

    千次阅读 2017-04-20 17:46:43
    1. 首先要想判断一个对象是否为null,很简单,使用if(obj)或者obj==null 直接判断即可。 2. 判断一个对象是否函数属性: 方法一:使用for in 和hasOwnProperty 判断是否含有属性。 和喵大婶探讨,得到方法二:...
  • JS:判断一个对象是否为空

    千次阅读 2017-07-28 23:03:30
    function isEmpty(obj) { // 判断对象是否为空对象 for (var name in obj) { return false; } // 不为空 return true; // 为空 };
  • ES6 判断一个对象是否为空

    千次阅读 2020-12-28 16:03:12
    ES6新增的一个方法 Object.keys(对象) Object.keys() 如果对象为空,则返回一个给定对象的自身可枚举属性组成的数组 如果对象为空,则返回数组
  • if 判断一个对象是否为空

    千次阅读 2020-04-15 16:15:59
    如果我们的对象为空,他会返回一个空数组,如下: var a = {}; Object.keys(a) // [] 我们可以依靠Object.keys()这个方法通过判断它的长度来知道它是否为空。 if (Object.keys(obj).length === 0...
  • 小程序判断一个对象是否为空

    万次阅读 2018-09-13 13:13:24
    如果我们的对象为空,他会返回一个空数组,如下: var a = {} Object.keys(a) // [] 我们可以依靠Object.keys()这个方法通过判断它的长度来知道它是否为空。 if (Object.keys(object).leng...
  • 如果当前对象为空 会抛出一个空指针异常 否则就会返回当前对象
  • 小程序判断一个对象是否为空 length不0的空对象集合list) 集合为空但list的length不0反而1;使用list.isEmpty 或者 list.size都返回undefined都无效,很是头大; 解决方案: Object.keys() 方法会返回...
  • python判断一个对象是否为空的方法

    万次阅读 2018-03-03 21:58:26
    判断对象是否为空:复制代码 代码如下:&gt;&gt;&gt; eth = {"eth0″:"192.168.1.1″}&gt;&gt;&gt; any(eth)True&gt;&gt;&gt; eth = {}&gt;&gt;&gt; any...
  • 一、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....
  • 字符串作为特殊的对象类 我们有的时候要判断是否为null或者 直接用 if (str != null && str.equals("")) {} 即可。 其他对象(容器)的话 就直接: if (obj != null){} 就完事了 ...
  • VBA如何判断一个对象是否为空

    万次阅读 2015-12-19 01:03:45
    if isNull(curRange)=false then 'Range 对象设置Nothing时不对用isNull来判断,当对象为Nothing时用什么来判断? ... end if 问题已经解决,判断方法是 if typeName(curRange)  ... end if 
  • Java 判断一个对象中某一个属性是否为空 每次写博客都不知道咋开头…算了^_^ 直接说问题吧。就是验证一个对象中的一个属性的值是否为空。 自己在网上也找到了很多大神给的答案,有看到利用反射机制 public ...
  • 怎样判断一个对象是否为空

    千次阅读 2010-03-09 14:33:00
    function isObjectEmpty(obj){ if(typeof obj != "object"){ throw "parameter type error !!!" } jj for(x in obj){ if(obj[x]) return false; } return true; }
  • Java判断一个对象属性是否为空

    万次阅读 2017-05-18 14:54:46
    就是在服务端在返回数据结构时,有些字段有时返回有时不返回(根据字段值来决定);但客户端会用到这些字段当没有返回时就会报指针异常。... if (f.get(obj) == null) { //判断字段是否为空,并且对象

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 677,755
精华内容 271,102
关键字:

如何判断一个对象是否为空