uni-app 关于undefined和null 作为判断条件

本文探讨了在uni-app中如何利用undefined作为条件判断。当后台返回的数据对象值为undefined时,这种情况在if语句中等价于false。以一个具体的业务场景为例,当已报价时间为空且截至报价时间大于等于当前时间时,允许进行报价。文章还提到了时间日期转换的util工具在处理此类问题中的应用。

前提需求:后台得到的数据对象中的某个值没有。会提示undefined,此时可以作为if 条件语句的判断,在条件判断中 undefined 的作用=false

具体业务:已报价时间为空且截至报价时间大于等于此刻的时间-----可报价

具体代码:

export default{
 data(){
 return{
   allow:false   //控制是否可以报价
 }
 },
 methods:{
    getData(){
    //后台请求得到数据后
    // 判断报价单,是否允许报价
		if (!this.Data.qDate) {      //Data 为后台得到数据 qDate为报价时间,没有undefined=false
			const oDateTime = new Date().getTime();  //此刻的时间 转为时间戳
			let pqExpiryDate = oDateTime;
			if (this.Data.expiryDate) {   //expiryDate为截至时间 有的话
			ExpiryDate = dateUtil.strToDate(this.Data.expiryDate).getTime(); 
			//转为时间戳
			//dateUtil.strToDate是一个日期转换的方法js(见下面代码)
					}
			if (oDateTime <= pqExpiryDate) {     //比较
					this.allowQuotation = true;   //允许报价
							}
						}

   }

}
}

时间,日期转换util

   /**
 * 字符串转换为日期对象
 * @param dateStr string 格式为yyyy-MM-dd HH:mm:ss,必须按年月日时分秒的顺序,中间分隔符不限制
 */
export function strToDate(dateStr) {         //dateStr:'2021-03-23 16:36:00'
    return strFormatToDate('yyyy-MM-dd HH:mm:ss', dateStr);
}
**
 * 把指定格式的字符串转换为日期对象yyyy-MM-dd HH:mm:ss
 *
 */
export function strFormatToDate(formatStr, dateStr) {
    let year = 0;
    let start = -1;
    let len = (dateStr|| '').length;
    if ((start = formatStr.indexOf('yyyy')) > -1 && start < len) {
        year = dateStr.substr(start, 4);
    }
    let month = 0;
    if ((start = formatStr.indexOf('MM')) > -1 && start < len) {
        month = parseInt(dateStr.substr(start, 2)) - 1;
    }
    let day = 0;
    if ((start = formatStr.indexOf('dd')) > -1 && start < len) {
        day = parseInt(dateStr.substr(start, 2));
    }
    let hour = 0;
    if (((start = formatStr.indexOf('HH')) > -1 || (start = formatStr.indexOf('hh')) > 1) && start < len) {
        hour = parseInt(dateStr.substr(start, 2));
    }
    let minute = 0;
    if ((start = formatStr.indexOf('mm')) > -1 && start < len) {
        minute = dateStr.substr(start, 2);
    }
    let second = 0;
    if ((start = formatStr.indexOf('ss')) > -1 && start < len) {
        second = dateStr.substr(start, 2);
    }
    return new Date(year, month, day, hour, minute, second);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值