精华内容
下载资源
问答
  • 主要介绍了C#利用反射来判断对象是否包含某个属性的实现方法,很有借鉴价值的一个技巧,需要的朋友可以参考下
  • js判断对象为空以及有好几种方法了,但是个人觉得不是特别方便。 比如: 1、把对象通过 JSON.stringify 转为字符串,再判断字符串是否等于 " {} " 2、for in循环,判断key是否存在 3、jq的方法 es6已经帮我们很...

    js判断对象为空已经有好几种方法了,但是个人觉得不是特别方便。

    比如:

    1、把对象通过 JSON.stringify 转为字符串,再判断字符串是否等于 " {} "

    2、for in循环,判断key是否存在

    3、jq的方法

    es6已经帮我们很好的解决了此类问题。

    es6针对对象增加了3个新方法(数组也有):

    (1)、Object.keys:返回一个数组,成员是参数对象自身的(不含继承的)所有可遍历属性的键名

    (2)、Object.values:返回一个数组,成员是参数对象自身的(不含继承的)所有可遍历属性的键值

    (3)、Object.entries:返回一个数组,成员是参数对象自身的(不含继承的)所有可遍历属性的键值对

    由此,我们可以通过其中任意一个方法,得到返回的数组,判断数组长度是否大于0,来判断对象是否为空。

    举个栗子:

    const obj = {
        foo: 'bar',
        baz: 42
    }
    console.log(Object.keys(obj)); 
    // ["foo", "baz"]
    
    console.log(Object.values(obj)); 
    // ["bar", 42]
    
    console.log(Object.entries(obj)); 
    // [["foo", "bar"], ["baz", 42]]
    
    // 打印返回值的长度
    console.log(Object.keys(obj).length); // 2
    
    const obj2 = {};
    console.log(Object.keys(obj2)); // [] 
    // 打印空对象的长度
    console.log(Object.keys(obj2).length); // 0

    这样我们就可以很简单直观的判断出对象是否为空,并且可以通过这三个方法,拿到想要的数据(键名、键值、键值对)

    那么既然得到了返回值数组,我们也可以很简单的判断对象中是否包含某个我们已知的属性名

    console.log(Object.keys(obj).indexOf('baz')); // 1
    
    console.log(Object.keys(obj).indexOf('ad')); // -1

    indexOf可以判断数组是否包含某个值,返回该值所对应的下标,对于不存在的值,返回 -1

    这样我们就能判断对象是否包含某个属性名了

    当然了,es6还提供了其他几种判断对象是否包含属性名的方法,如下:

    1、in:属性名 in 对象(判断属性名是否在对象中存在,返回一个布尔值)

    console.log('baz' in obj); // true

    2、hasOwnProperty:对象.hasOwnProperty(属性名)(判断对象中是否含有某个属性名,返回一个布尔值)

    console.log(obj.hasOwnProperty('baz')); // true

    好了,以上就是es6中判断对象是否为空,并且判断对象是否包含某个属性的方法

    如有问题,请指出,接收批评。

    个人微信公众号:

    展开全文
  • @ApiModel(value = "IFieldResult", description = "判断包含属性结果") public class IFieldResult<T> { private Boolean flag; private String type; private String table; private String hisValue; ...

    1、工具类

    import com.myfutech.employee.service.api.vo.request.candidate.CandidateImportVO;
    import com.myfutech.employee.service.api.vo.request.employee.EmployeeModifyVO;
    import com.myfutech.employee.service.provider.model.Employee;
    import com.myfutech.employee.service.provider.util.vo.IFieldResult;
    import io.swagger.annotations.ApiModelProperty;
    import org.apache.commons.lang3.StringUtils;
    import org.apache.commons.lang3.time.DateFormatUtils;
    import org.apache.commons.lang3.time.DateUtils;
    
    import java.lang.reflect.Field;
    import java.util.Date;
    
    /**
     * Created by Liuxd on 2019/2/25.
     */
    public class IBeanUtils {
    
        public static IFieldResult containFieldName(Object obj, String filedName, String filedValue) throws Exception {
            if (StringUtils.isBlank(filedName)) {
                return new IFieldResult(false);
            }
    
            boolean flag = false;
            String type = "";
            Object value = null;
    
            for (Field f : obj.getClass().getDeclaredFields()) {
                f.setAccessible(true);
    
                if (filedName.equals(f.getName())) {
                    flag = true;
                    type = f.getType().toString();
                    if (type.contains("Date")) {
                        if (!filedValue.contains(":")) {
                            filedValue = filedValue + " 00:00:00";
                        }
                        value = DateUtils.parseDate(filedValue, "yyyy-MM-dd HH:mm:ss");
                    } else {
                        value = filedValue;
                    }
                    break;
                }
    
            }
    
            return new IFieldResult(flag, type, value);
        }
    
        public static String getFieldValueByFieldName(String fieldName, Object object) {
            try {
                Field field = object.getClass().getDeclaredField(fieldName);
                //设置对象的访问权限,保证对private的属性的访问
                field.setAccessible(true);
                Object hisValue = field.get(object);
                if (null == hisValue) {
                    return "";
                }
    
                String value = "";
                String type = field.getType().toString();
                if (type.contains("Date")) {
                    value = DateFormatUtils.format((Date) hisValue, "yyyy-MM-dd HH:mm:ss");
                } else {
                    value = hisValue.toString();
                }
    
                return value;
            } catch (Exception e) {
    
                return "";
            }
        }
    
        public static String getFieldTypeByFieldName(String fieldName, Object object) {
            try {
                Field field = object.getClass().getDeclaredField(fieldName);
                //设置对象的访问权限,保证对private的属性的访问
                field.setAccessible(true);
                String type = field.getType().toString();
                return type;
            } catch (Exception e) {
    
                return "";
            }
        }
    
        public static String getFieldAnnotation(String fieldName, Object object) {
            try {
                Field field = object.getClass().getDeclaredField(fieldName);
                //设置对象的访问权限,保证对private的属性的访问
                field.setAccessible(true);
                ApiModelProperty property = field.getAnnotation(ApiModelProperty.class);
                if (null == property) {
                    return "";
                }
    
                return property.value();
            } catch (Exception e) {
                return "";
            }
    
        }
    
        /**
         * 判断对象中属性值是否全为空
         *
         * @param object
         * @return
         */
        public static boolean checkObjAllFieldsIsNull(Object object) {
            if (null == object) {
                return true;
            }
    
            try {
                for (Field f : object.getClass().getDeclaredFields()) {
                    f.setAccessible(true);
    
                    if (f.get(object) != null && StringUtils.isNotBlank(f.get(object).toString())) {
                        return false;
                    }
    
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
    
            return true;
        }
    
    
        public static void main(String[] args) throws Exception {
            EmployeeModifyVO vo = new EmployeeModifyVO();
    
            IFieldResult result = IBeanUtils.containFieldName(vo, "employeeName", "99999");
    
            System.out.println(result.toString());
    
            vo.setEmployeeName("Jack");
    
            Object v = getFieldValueByFieldName("employeeName", vo);
    
            System.out.println(v);
    
            Employee employee = new Employee();
    
            employee.setCreateTime(new Date());
    
            String v2 = getFieldValueByFieldName("createTime", employee);
    
            System.out.println(v2);
    
            CandidateImportVO vo2 = new CandidateImportVO();
            boolean flag = checkObjAllFieldsIsNull(vo2);
            System.out.println(flag);
    
    
        }
    
    
    }
    

    2、相关VO类

    import io.swagger.annotations.ApiModel;
    import lombok.Data;
    
    @Data
    @ApiModel(value = "IFieldResult", description = "判断类包含属性结果")
    public class IFieldResult<T> {
    
        private Boolean flag;
    
        private String type;
    
        private String table;
    
        private String hisValue;
    
        private T value;
    
        public IFieldResult() {
        }
    
        public IFieldResult(Boolean flag) {
            this.flag = flag;
        }
    
        public IFieldResult(Boolean flag, String type, T value) {
            this.flag = flag;
            this.type = type;
            this.value = value;
        }
    }
    
    import io.swagger.annotations.ApiModel;
    import io.swagger.annotations.ApiModelProperty;
    import lombok.Data;
    import lombok.ToString;
    
    import javax.validation.constraints.NotBlank;
    import javax.validation.constraints.NotEmpty;
    import javax.validation.constraints.NotNull;
    import java.io.Serializable;
    
    @Data
    @ToString
    @ApiModel(value = "EmployeeModifyVO",description = "员工新增或修改对应实体类")
    public class EmployeeModifyVO implements Serializable {
    
        private static final long serialVersionUID = -7226431718100006277L;
    
        public interface Create {}
        public interface Update extends Create {}
    
        @NotEmpty(groups = EmployeeModifyVO.Update.class)
        @ApiModelProperty("员工id")
        private Long id;
    
        @ApiModelProperty("员工编号")
        private String employeeCode;
    
        @NotEmpty(groups = EmployeeModifyVO.Create.class)
        @ApiModelProperty("员工姓名")
        private String employeeName;
    
        @ApiModelProperty("职级类型")
        private String rank;
    
        @ApiModelProperty("职级序列")
        private Integer orders;
    
        @NotNull(groups = EmployeeModifyVO.Create.class)
        @ApiModelProperty("证件类型 0身份证 1护照")
        private Integer documentType;
    
        @NotNull(groups = EmployeeModifyVO.Create.class)
        @ApiModelProperty("身份证号码")
        private String identityCard;
    
        @NotBlank(groups = EmployeeModifyVO.Create.class)
        @ApiModelProperty("手机号")
        private String phoneNumber;
    
        @ApiModelProperty("备用手机号")
        private String phoneBackup;
    
        @ApiModelProperty("公司邮箱")
        private String workEmail;
    
        @ApiModelProperty("入职时间")
        private String entryTime;
    
        @ApiModelProperty("转正时间")
        protected String formalTime;
    
        @ApiModelProperty("离职日期")
        private String dimissionTime;
    
        @ApiModelProperty("业绩考核 0否1是")
        private Integer examine;
    
        @ApiModelProperty("是否同步用户0是1否")
        private Integer isUser;
    
        @ApiModelProperty("员工类型(字典key:employeeType)")
        private Integer employeeType;
    
    }
    

     

    展开全文
  • 检测对象属性的存在与否可以通过以下几种方法来判断:使用in关键字、使用对象的hasOwnProperty()方法、用undefined判断、在条件语句中直接判断,感兴趣的朋友可以了解下哈
  • vue 判断对象是否包含某个属性,el-table formatter判断 当前的业务逻辑是表格中大概有四五个字段需要判断,如果是null或者0就返回暂无数据,有值的话就返回对应的值,如下图: 由于需要进行的操作是一样的,所以用...

    vue 判断对象是否包含某个属性,el-table formatter判断


    当前的业务逻辑是表格中大概有四五个字段需要判断,如果是null或者0就返回暂无数据,有值的话就返回对应的值,如下图:
    在这里插入图片描述
    由于需要进行的操作是一样的,所以用一个formatter就可以了,所以要判断对应的字段,代码如下:
    1.表格部分

    <el-table-column
      label="报送数量"
      prop="vulWarnNum"
      width="140"
      align="center"
      :formatter="dataFormat"
    />
    

    2.方法体部分

    dataFormat(row, column) {
          const field = column.property
          if (Object.prototype.hasOwnProperty.call(row, field)) {
            if (row[field] == null || row[field] === 0) {
              return '暂不要求'
            }
          }
          return row[field]
        }
    

    其中Object.prototype.hasOwnProperty.call(row, field)就是判断row中是否包含对应的字段名称
    原先的写法是

    row.hasOwnProperty(field)
    

    现在换成

    Object.prototype.hasOwnProperty.call(row, field)
    

    但是报错ESLint: Do not access Object.prototype method 'hasOwnProperty' from target object.(no-prototype-builtins),所以最好是从 Object.prototype 调用这些方法

    展开全文
  • ES6还提供了其他几种判断对象是否包含属性名的方法: 2.in:属性名 in 对象(判断属性名是否存在对象中存在,返回一个布尔值); var obj = { name:'张三', age:22, sex:'male' }; console.log('name' in obj...

    判断对象中是否包含某个属性名

    1.indexOf 可以判断数组是否包含某个值,返回该值对应的下标;对于不存在的值,返回-1;

    ES6还提供了其他几种判断对象是否包含属性名的方法:

    2.in:属性名 in 对象(判断属性名是否存在对象中存在,返回一个布尔值);

    var obj = {
            name:'张三',
            age:22,
            sex:'male'
        };
    console.log('name' in obj); /true
    console.log('personal' in obj); //false

    3.hasOwnProperty:对象.hasOwnProperty(属性名) (判断对象中是否含有某个属性名,返回一个布尔值);

    ​var obj= {
            name:'张三',
            age:22,
            sex:'male'
        };
    console.log(obj.hasOwnProperty('age')); //true
    console.log(obj.hasOwnProperty('personal')); //false
    
    ​

     

    展开全文
  • js判断对象中是否包含某个属性

    千次阅读 2020-05-05 17:09:22
    方法一(in)有返回true,否者返回false var obj = { name: 'dj', age: 18 } console.log('name' in obj) // true console.log('eat' in obj) // false 方法二(hasOwnProperty)有返回true,否者返回false ...
  • js 判断对象中是否包含某个属性

    万次阅读 2019-06-27 14:01:13
    var obj = {name:'张三',age:18}; obj.hasOwnProperty('name'); // --> true obj.hasOwnProperty('id'); // --> false
  • ==”进行判断,这种方法在工作中很常见,可以看出该方法可以判断继承来的属性。 let obj = { x: 1 }; obj.x !== undefined; // true 有x属性 obj.y !== undefined; // false 无y属性 obj.toString !== undefined; ...
  • 判断 json 对象是否包含某个属性

    千次阅读 2020-03-30 16:44:57
    hasOwnProperty() 判断对象是否包含特定的自身(非继承)属性,返回布尔值 IE 5.5+、FireFox、Chrome、Safari、Opera等主流浏览器均支持该函数。 Object.hasOwnProperty("属性名") “key” in Object if("属性名" ...
  • 判断JS对象是否拥有某属性

    千次阅读 2019-03-26 14:34:01
    1.in 运算符 无论是name,还是原形链上的toString,都能检测到返回true。   var obj = {name:'jack'}; alert('name' in obj);...原型链上继承过来的属性无法通过hasOwnProperty检测到,返回false。
  • JS 判断对象属性是否存在,判断是否包含某个属性,是否为自身属性 判断是否包含某对象 我们知道访问对象属性有两种形式,如下: var obj = { name:'听风是风' }; obj.name; //听风是风 obj['name']; //听风是风 ...
  • Python 判断对象是否包含某个属性

    万次阅读 2019-03-02 13:17:43
    说明:判断对象object是否包含名为name的特性(hasattr是通过调用getattr(ojbect, name)是否抛出异常来实现的)。 参数object:对象。 参数name:特性名称。 >>> hasattr(list, 'append') True >>> hasattr...
  • 先创建两个类,判断类的属性是否存在: class Foo(object): def __init__(self): super(Foo, self).__init__() self.is_whole = 1 class Doo(object): def __init__(self): super(Doo, self).__...
  • thymeleaf判断对象是否包含某个属性

    千次阅读 2020-07-06 16:22:14
    th:if="${mssTable.get('descripition')}!=null" 使用对象.get(‘属性名称’)来判断这个属性是否存在
  • 【Java】判断对象中是否存在某属性

    千次阅读 2020-12-31 22:26:46
    判断对象中是否存在某属性
  • 1、就是某种情况下,我们需要判断一个数组的每一个下标值为对象时,我们再给它push一个对象属性,但是这个对象属性值不能相同,所以要查看它是否存在相同的属性值。 例如,下面的数组,我们要在给他添加一个对象,...
  • 判断一个对象是否包含一个属性有多种的方式,如下: const obj = { name: 'john' } var a = 'name' in obj var b = Reflect.has(obj, 'name') var c = Reflect.hasOwnProperty.call(obj, 'name') var d = Object....
  • ...
  • if (data && data.hasOwnProperty('Rows')) { (data.Rows.Row ||[]).map((row) => { if (row.hasOwnProperty("Summary")) { ...hasOwnProperty 就是判断是否含有key 为 Rows 的属性 ...
  • js判断对象是否包含某个(字段)属性

    千次阅读 2020-04-24 13:51:41
    //创建对象 data var data = scope.data; //判断update值为‘是’时,data里要有'userXM' 和'mobile' 两个字段,并且都不为空 if(scope.update == "是"){ if(!('userXM' in data)||!( 'm...
  • 说明:判断对象object是否包含名为name的特性(hasattr是通过调用getattr(ojbect, name)是否抛出异常来实现的)。 参数object:对象。 参数name:特性名称。 >>> hasattr(list, 'append') True >>> hasattr...
  • 主要介绍了JS实现查找数组中对象属性值是否存在,涉及javascript针对json数组的遍历、查找相关操作技巧,需要的朋友可以参考下
  • 1、对象数据 function findElem(arrayToSearch,attr,val){ for (var i=0;i<arrayToSearch.length;i++){ if(arrayToSearch[i][attr]==val){ ...
  • 1、先用map筛选出属性 selectedRows.map(a => a.isSd) 2、用indexof直接查询筛选出的数组是否包含该某个值 selectedRows.map(a => a.isSd).indexOf(1) 如果返回时-1,则不包含。如果包含会返回>-1...
  • 1-判断对象中是否包含某个元素 方法一: 使用in var str = { name:"mayouchen", name:"js", age:100 } alert('name' in str);//tr
  • 工作中遇到一个问题就是要动态给数组是对象中添加或者删除某个数组,,本来想用for循环的但是这样就会有一个bug就是每次都会添加,,最后只能使用indexOF  var a =[{"name":"1111"},{"name":"222"}] console.log...
  • 1.当页面初始化时,需要某个对象属性对应的数据来渲染,但是起始值或者后端返回的可能就是null或者{} data(){ return{ a:{} } }, cerated(){ let res=null // or {} this.a=res } 一旦对象层级超过...
  • 判断i的值在basicWindPowerList中是否拥有,如果没有进入if判断里面的逻辑 for (double i = 0; i &lt;= 25; i += 0.5){ String index = String.valueOf(i); if (!basicWindPowerList.stream().filter(w-&...
  • Vue 判断对象是否存在某个属性/字段

    千次阅读 2021-05-06 21:16:50
    Vue 判断对象是否存在某个属性/字段 if(row.hasOwnProperty('url')){ //row对象存在'url'属性 }else{ //row对象不存在'url'属性 }

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 481,650
精华内容 192,660
关键字:

判断对象包含某属性